diff --git a/CHANGELOG.md b/CHANGELOG.md index 43b227408e..db1f959378 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,252 @@ +Changes in [0.16.4](https://github.com/vector-im/riot-web/releases/tag/v0.16.4) (2018-09-10) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.16.4-rc.1...v0.16.4) + + * No changes since rc.1 + +Changes in [0.16.4-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.16.4-rc.1) (2018-09-07) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.16.3...v0.16.4-rc.1) + + * Update from Weblate. + [\#7296](https://github.com/vector-im/riot-web/pull/7296) + * Fix config not loading & mobileguide script being loaded in riot + [\#7288](https://github.com/vector-im/riot-web/pull/7288) + * Instructions for installing mobile apps + [\#7272](https://github.com/vector-im/riot-web/pull/7272) + * Tidy up index.js + [\#7265](https://github.com/vector-im/riot-web/pull/7265) + +Changes in [0.16.3](https://github.com/vector-im/riot-web/releases/tag/v0.16.3) (2018-09-03) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.16.3-rc.2...v0.16.3) + + * SECURITY FIX: This version (and release candidates) pull in an upstream security + fix from electron to fix CVE-2018-15685. Electron users should update as soon as + possible. Riot-web run outside of Electron is unaffected. + +Changes in [0.16.3-rc.2](https://github.com/vector-im/riot-web/releases/tag/v0.16.3-rc.2) (2018-08-31) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.16.3-rc.1...v0.16.3-rc.2) + + * Update js-sdk to fix an exception causing the room list to become unresponsive. + +Changes in [0.16.3-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.16.3-rc.1) (2018-08-30) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.16.2...v0.16.3-rc.1) + + * Update from Weblate. + [\#7245](https://github.com/vector-im/riot-web/pull/7245) + * Revert "Remove package-lock.json for now" + [\#7128](https://github.com/vector-im/riot-web/pull/7128) + * Remove package-lock.json for now + [\#7115](https://github.com/vector-im/riot-web/pull/7115) + +Changes in [0.16.2](https://github.com/vector-im/riot-web/releases/tag/v0.16.2) (2018-08-23) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.16.1...v0.16.2) + + * Support new server notices format + +Changes in [0.16.1](https://github.com/vector-im/riot-web/releases/tag/v0.16.1) (2018-08-20) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.16.1-rc.1...v0.16.1) + + * No changes since rc.1 + +Changes in [0.16.1-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.16.1-rc.1) (2018-08-16) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.16.0...v0.16.1-rc.1) + + * Update from Weblate. + [\#7178](https://github.com/vector-im/riot-web/pull/7178) + * CSS for MAU warning bar + [\#7152](https://github.com/vector-im/riot-web/pull/7152) + * CSS for user limit error + [\#7139](https://github.com/vector-im/riot-web/pull/7139) + * Unpin sanitize-html + [\#7132](https://github.com/vector-im/riot-web/pull/7132) + * Pin sanitize-html to 0.18.2 + [\#7129](https://github.com/vector-im/riot-web/pull/7129) + +Changes in [0.16.0](https://github.com/vector-im/riot-web/releases/tag/v0.16.0) (2018-07-30) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.16.0-rc.2...v0.16.0) + +* Update react-sdk version for bugfixes with Jitsi widgets and the new composer + +Changes in [0.16.0-rc.2](https://github.com/vector-im/riot-web/releases/tag/v0.16.0-rc.2) (2018-07-24) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.16.0-rc.1...v0.16.0-rc.2) + + * Update to react-sdk rc.2 to remove Jitsi conference calling from labs + +Changes in [0.16.0-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.16.0-rc.1) (2018-07-24) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.7...v0.16.0-rc.1) + + * Update from Weblate. + [\#7082](https://github.com/vector-im/riot-web/pull/7082) + * Sample config for jitsi integration URL + [\#7055](https://github.com/vector-im/riot-web/pull/7055) + +Changes in [0.15.7](https://github.com/vector-im/riot-web/releases/tag/v0.15.7) (2018-07-09) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.7-rc.2...v0.15.7) + + * No changes since rc.2 + +Changes in [0.15.7-rc.2](https://github.com/vector-im/riot-web/releases/tag/v0.15.7-rc.2) (2018-07-06) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.7-rc.1...v0.15.7-rc.2) + + * Update react-sdk and js-sdk + +Changes in [0.15.7-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.15.7-rc.1) (2018-07-04) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.6...v0.15.7-rc.1) + + * add override for colour of room tile text within memberinfo (unreadable) + [\#6889](https://github.com/vector-im/riot-web/pull/6889) + +Changes in [0.15.6](https://github.com/vector-im/riot-web/releases/tag/v0.15.6) (2018-06-29) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.6-rc.2...v0.15.6) + + * Pull in bug fixes from react-sdk + +Changes in [0.15.6-rc.2](https://github.com/vector-im/riot-web/releases/tag/v0.15.6-rc.2) (2018-06-22) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.6-rc.1...v0.15.6-rc.2) + + * Update to react-sdk rc.2 for fix to slash commands + +Changes in [0.15.6-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.15.6-rc.1) (2018-06-21) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.5...v0.15.6-rc.1) + + * Update from Weblate. + [\#6915](https://github.com/vector-im/riot-web/pull/6915) + * [electron] Fix desktop app --hidden flag + [\#6805](https://github.com/vector-im/riot-web/pull/6805) + +Changes in [0.15.5](https://github.com/vector-im/riot-web/releases/tag/v0.15.5) (2018-06-12) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.5-rc.1...v0.15.5) + + * No changes since rc.1 + +Changes in [0.15.5-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.15.5-rc.1) (2018-06-06) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.4...v0.15.5-rc.1) + + * Update from Weblate. + [\#6846](https://github.com/vector-im/riot-web/pull/6846) + +Changes in [0.15.4](https://github.com/vector-im/riot-web/releases/tag/v0.15.4) (2018-05-25) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.4-rc.1...v0.15.4) + + * Add cookie policy link to desktop app config + +Changes in [0.15.4-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.15.4-rc.1) (2018-05-24) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.3...v0.15.4-rc.1) + + * Update from Weblate. + [\#6792](https://github.com/vector-im/riot-web/pull/6792) + * Hide URL options for e2e blob: URL images + [\#6765](https://github.com/vector-im/riot-web/pull/6765) + * Fix right click menu in electron + [\#6763](https://github.com/vector-im/riot-web/pull/6763) + * Update to electron 2.0.1 + [\#6764](https://github.com/vector-im/riot-web/pull/6764) + * Add instructions for changing translated strings + [\#6528](https://github.com/vector-im/riot-web/pull/6528) + +Changes in [0.15.3](https://github.com/vector-im/riot-web/releases/tag/v0.15.3) (2018-05-18) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.2...v0.15.3) + + * Fix right click menu in electron + [\#6763](https://github.com/vector-im/riot-web/pull/6763) + * Update to electron 2.0.1 + [\#6764](https://github.com/vector-im/riot-web/pull/6764) + * Hide URL options for e2e blob: URL images + [\#6765](https://github.com/vector-im/riot-web/pull/6765) + +Changes in [0.15.2](https://github.com/vector-im/riot-web/releases/tag/v0.15.2) (2018-05-17) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.1...v0.15.2) + + * Update to matrix-react-sdk v0.12.5 to fix image size jumps + +Changes in [0.15.1](https://github.com/vector-im/riot-web/releases/tag/v0.15.1) (2018-05-16) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.0...v0.15.1) + + * Fix package-lock.json which was causing errors building the Electron app + * Update Electron version + +Changes in [0.15.0](https://github.com/vector-im/riot-web/releases/tag/v0.15.0) (2018-05-16) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.0-rc.6...v0.15.0) + + * No changes since rc.6 + +Changes in [0.15.0-rc.6](https://github.com/vector-im/riot-web/releases/tag/v0.15.0-rc.6) (2018-05-15) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.0-rc.5...v0.15.0-rc.6) + + * Update to matrix-react-sdk 0.12.4-rc.6 + +Changes in [0.15.0-rc.5](https://github.com/vector-im/riot-web/releases/tag/v0.15.0-rc.5) (2018-05-15) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.0-rc.4...v0.15.0-rc.5) + + * Update to matrix-react-sdk 0.12.4-rc.5 + +Changes in [0.15.0-rc.4](https://github.com/vector-im/riot-web/releases/tag/v0.15.0-rc.4) (2018-05-14) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.0-rc.3...v0.15.0-rc.4) + + * Update from Weblate. + [\#6726](https://github.com/vector-im/riot-web/pull/6726) + * Update to matrix-react-sdk 0.12.4-rc.4 + +Changes in [0.15.0-rc.3](https://github.com/vector-im/riot-web/releases/tag/v0.15.0-rc.3) (2018-05-11) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.0-rc.2...v0.15.0-rc.3) + + * Update to matrix-react-sdk 0.12.4-rc.3 + +Changes in [0.15.0-rc.2](https://github.com/vector-im/riot-web/releases/tag/v0.15.0-rc.2) (2018-05-09) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.15.0-rc.1...v0.15.0-rc.2) + + * Update to matrix-react-sdk 0.12.4-rc.2 + +Changes in [0.15.0-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.15.0-rc.1) (2018-05-09) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.14.3-rc.1...v0.15.0-rc.1) + + * No changes since 0.14.3-rc.1 + +Changes in [0.14.3-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.14.3-rc.1) (2018-05-09) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.14.2...v0.14.3-rc.1) + + * Update from Weblate. + [\#6688](https://github.com/vector-im/riot-web/pull/6688) + * Don't show presence on matrix.org + [\#6638](https://github.com/vector-im/riot-web/pull/6638) + * Enforce loading babel-polyfill first + [\#6625](https://github.com/vector-im/riot-web/pull/6625) + * Update hoek + [\#6624](https://github.com/vector-im/riot-web/pull/6624) + * Fix args in the release wrapper script + [\#6614](https://github.com/vector-im/riot-web/pull/6614) + Changes in [0.14.2](https://github.com/vector-im/riot-web/releases/tag/v0.14.2) (2018-04-30) ============================================================================================ [Full Changelog](https://github.com/vector-im/riot-web/compare/v0.14.2-rc.3...v0.14.2) diff --git a/README.md b/README.md index 9a030913b3..5bc88d082d 100644 --- a/README.md +++ b/README.md @@ -241,18 +241,6 @@ apps using React. After creating a new component you must run `npm run reskindex` to regenerate the `component-index.js` for the app (used in future for skinning) -**However, as of July 2016 this layering abstraction is broken due to rapid -development on Riot forcing `matrix-react-sdk` to move fast at the expense of -maintaining a clear abstraction between the two.** Hacking on Riot inevitably -means hacking equally on `matrix-react-sdk`, and there are bits of -`matrix-react-sdk` behaviour incorrectly residing in the `riot-web` project -(e.g. matrix-react-sdk specific CSS), and a bunch of Riot specific behaviour -in the `matrix-react-sdk` (grep for `vector` / `riot`). This separation problem will be -solved asap once development on Riot (and thus matrix-react-sdk) has -stabilised. Until then, the two projects should basically be considered as a -single unit. In particular, `matrix-react-sdk` issues are currently filed -against `riot-web` in github. - Please note that Riot is intended to run correctly without access to the public internet. So please don't depend on resources (JS libs, CSS, images, fonts) hosted by external CDNs or servers but instead please package all dependencies diff --git a/config.sample.json b/config.sample.json index b80746f629..a50eaf7d26 100644 --- a/config.sample.json +++ b/config.sample.json @@ -8,6 +8,7 @@ "brand": "Riot", "integrations_ui_url": "https://scalar.vector.im/", "integrations_rest_url": "https://scalar.vector.im/api", + "integrations_jitsi_widget_url": "https://scalar.vector.im/api/widgets/jitsi.html", "bug_report_endpoint_url": "https://riot.im/bugreports/submit", "features": { "feature_groups": "labs", diff --git a/docs/translating-dev.md b/docs/translating-dev.md index 3209f1e400..d058c7cdbd 100644 --- a/docs/translating-dev.md +++ b/docs/translating-dev.md @@ -3,6 +3,8 @@ ## Requirements - A working [Development Setup](../../#setting-up-a-dev-environment) + - Including up-to-date versions of matrix-react-sdk and matrix-js-sdk +- Node 8 or later - Be able to understand English - Be able to understand the language you want to translate riot-web into @@ -30,9 +32,15 @@ function getColorName(hex) { 1. Check if the import ``import { _t } from 'matrix-react-sdk/lib/languageHandler';`` is present. If not add it to the other import statements. Also import `_td` if needed. 1. Add ``_t()`` to your string. (Don't forget curly braces when you assign an expression to JSX attributes in the render method). If the string is introduced at a point before the translation system has not yet been initialized, use `_td()` instead, and call `_t()` at the appropriate time. - 1. Run `npm run i18n` to update ``src/i18n/strings/en_EN.json`` (if it fails because it can't find the script, your dev environment predates the script, so reinstall/link react-sdk with `npm link ../matrix-react-sdk`). If it segfaults, you may be on Node 6, so try a newer version of node. + 1. Run `npm run i18n` to update ``src/i18n/strings/en_EN.json`` 1. If you added a string with a plural, you can add other English plural variants to ``src/i18n/strings/en_EN.json`` (remeber to edit the one in the same project as the source file containing your new translation). +## Editing existing strings + +1. Edit every occurrence of the string inside `_t()` and `_td()` in the JSX files. +1. Run `npm run i18n` to update `src/i18n/strings/en_EN.json`. (Be sure to run this in the same project as the JSX files you just edited.) +1. Run `npm run prunei18n` to remove the old string from `src/i18n/strings/*.json`. + ## Adding variables inside a string. 1. Extend your ``_t()`` call. Instead of ``_t(STRING)`` use ``_t(STRING, {})`` diff --git a/electron_app/package.json b/electron_app/package.json index 2eb681ec0d..7a508cd273 100644 --- a/electron_app/package.json +++ b/electron_app/package.json @@ -2,7 +2,7 @@ "name": "riot-web", "productName": "Riot", "main": "src/electron-main.js", - "version": "0.14.2", + "version": "0.16.4", "description": "A feature-rich client for Matrix.org", "author": "Vector Creations Ltd.", "dependencies": { diff --git a/electron_app/riot.im/config.json b/electron_app/riot.im/config.json index 099db1b57d..10b453a469 100644 --- a/electron_app/riot.im/config.json +++ b/electron_app/riot.im/config.json @@ -18,7 +18,8 @@ }, "piwik": { "url": "https://piwik.riot.im/", - "siteId": 1 + "siteId": 1, + "policyUrl": "https://matrix.org/docs/guides/riot_im_cookie_policy" }, "enable_presence_by_hs_url": { "https://matrix.org": false diff --git a/electron_app/src/electron-main.js b/electron_app/src/electron-main.js index 4ffe211044..85955392aa 100644 --- a/electron_app/src/electron-main.js +++ b/electron_app/src/electron-main.js @@ -23,7 +23,7 @@ const checkSquirrelHooks = require('./squirrelhooks'); if (checkSquirrelHooks()) return; const argv = require('minimist')(process.argv); -const electron = require('electron'); +const {app, ipcMain, powerSaveBlocker, BrowserWindow, Menu} = require('electron'); const AutoLaunch = require('auto-launch'); const tray = require('./tray'); @@ -33,8 +33,8 @@ const updater = require('./updater'); const windowStateKeeper = require('electron-window-state'); -if (argv.profile) { - electron.app.setPath('userData', `${electron.app.getPath('userData')}-${argv.profile}`); +if (argv['profile']) { + app.setPath('userData', `${app.getPath('userData')}-${argv['profile']}`); } let vectorConfig = {}; @@ -62,14 +62,14 @@ process.on('uncaughtException', function(error) { }); let focusHandlerAttached = false; -electron.ipcMain.on('setBadgeCount', function(ev, count) { - electron.app.setBadgeCount(count); - if (count === 0) { +ipcMain.on('setBadgeCount', function(ev, count) { + app.setBadgeCount(count); + if (count === 0 && mainWindow) { mainWindow.flashFrame(false); } }); -electron.ipcMain.on('loudNotification', function() { +ipcMain.on('loudNotification', function() { if (process.platform === 'win32' && mainWindow && !mainWindow.isFocused() && !focusHandlerAttached) { mainWindow.flashFrame(true); mainWindow.once('focus', () => { @@ -81,16 +81,16 @@ electron.ipcMain.on('loudNotification', function() { }); let powerSaveBlockerId; -electron.ipcMain.on('app_onAction', function(ev, payload) { +ipcMain.on('app_onAction', function(ev, payload) { switch (payload.action) { case 'call_state': - if (powerSaveBlockerId && electron.powerSaveBlocker.isStarted(powerSaveBlockerId)) { + if (powerSaveBlockerId && powerSaveBlocker.isStarted(powerSaveBlockerId)) { if (payload.state === 'ended') { - electron.powerSaveBlocker.stop(powerSaveBlockerId); + powerSaveBlocker.stop(powerSaveBlockerId); } } else { if (payload.state === 'connected') { - powerSaveBlockerId = electron.powerSaveBlocker.start('prevent-display-sleep'); + powerSaveBlockerId = powerSaveBlocker.start('prevent-display-sleep'); } } break; @@ -98,9 +98,12 @@ electron.ipcMain.on('app_onAction', function(ev, payload) { }); -electron.app.commandLine.appendSwitch('--enable-usermedia-screen-capturing'); +app.commandLine.appendSwitch('--enable-usermedia-screen-capturing'); + +const shouldQuit = app.makeSingleInstance((commandLine, workingDirectory) => { + // If other instance launched with --hidden then skip showing window + if (commandLine.includes('--hidden')) return; -const shouldQuit = electron.app.makeSingleInstance((commandLine, workingDirectory) => { // Someone tried to run a second instance, we should focus our window. if (mainWindow) { if (!mainWindow.isVisible()) mainWindow.show(); @@ -111,7 +114,7 @@ const shouldQuit = electron.app.makeSingleInstance((commandLine, workingDirector if (shouldQuit) { console.log('Other instance detected: exiting'); - electron.app.exit(); + app.exit(); } @@ -136,7 +139,7 @@ const settings = { }, }; -electron.ipcMain.on('settings_get', async function(ev) { +ipcMain.on('settings_get', async function(ev) { const data = {}; try { @@ -145,34 +148,37 @@ electron.ipcMain.on('settings_get', async function(ev) { })); ev.sender.send('settings', data); - } catch(e) { console.error(e); } + } catch (e) { + console.error(e); + } }); -electron.ipcMain.on('settings_set', function(ev, key, value) { +ipcMain.on('settings_set', function(ev, key, value) { console.log(key, value); if (settings[key] && settings[key].set) { settings[key].set(value); } }); -electron.app.on('ready', () => { - - if (argv.devtools) { +app.on('ready', () => { + if (argv['devtools']) { try { - const { default: installExtension, REACT_DEVELOPER_TOOLS, REACT_PERF } = require('electron-devtools-installer'); - installExtension(REACT_DEVELOPER_TOOLS) + const { default: installExt, REACT_DEVELOPER_TOOLS, REACT_PERF } = require('electron-devtools-installer'); + installExt(REACT_DEVELOPER_TOOLS) .then((name) => console.log(`Added Extension: ${name}`)) .catch((err) => console.log('An error occurred: ', err)); - installExtension(REACT_PERF) + installExt(REACT_PERF) .then((name) => console.log(`Added Extension: ${name}`)) .catch((err) => console.log('An error occurred: ', err)); - } catch(e) {console.log(e);} + } catch (e) { + console.log(e); + } } - if (vectorConfig.update_base_url) { - console.log(`Starting auto update with base URL: ${vectorConfig.update_base_url}`); - updater.start(vectorConfig.update_base_url); + if (vectorConfig['update_base_url']) { + console.log(`Starting auto update with base URL: ${vectorConfig['update_base_url']}`); + updater.start(vectorConfig['update_base_url']); } else { console.log('No update_base_url is defined: auto update is disabled'); } @@ -185,7 +191,7 @@ electron.app.on('ready', () => { defaultHeight: 768, }); - mainWindow = global.mainWindow = new electron.BrowserWindow({ + mainWindow = global.mainWindow = new BrowserWindow({ icon: iconPath, show: false, autoHideMenuBar: true, @@ -196,7 +202,7 @@ electron.app.on('ready', () => { height: mainWindowState.height, }); mainWindow.loadURL(`file://${__dirname}/../../webapp/index.html`); - electron.Menu.setApplicationMenu(vectorMenu); + Menu.setApplicationMenu(vectorMenu); // explicitly hide because setApplicationMenu on Linux otherwise shows... // https://github.com/electron/electron/issues/9621 @@ -208,11 +214,16 @@ electron.app.on('ready', () => { brand: vectorConfig.brand || 'Riot', }); - if (!argv.hidden) { - mainWindow.once('ready-to-show', () => { + mainWindow.once('ready-to-show', () => { + mainWindowState.manage(mainWindow); + + if (!argv['hidden']) { mainWindow.show(); - }); - } + } else { + // hide here explicitly because window manage above sometimes shows it + mainWindow.hide(); + } + }); mainWindow.on('closed', () => { mainWindow = global.mainWindow = null; @@ -240,18 +251,17 @@ electron.app.on('ready', () => { } webContentsHandler(mainWindow.webContents); - mainWindowState.manage(mainWindow); }); -electron.app.on('window-all-closed', () => { - electron.app.quit(); +app.on('window-all-closed', () => { + app.quit(); }); -electron.app.on('activate', () => { +app.on('activate', () => { mainWindow.show(); }); -electron.app.on('before-quit', () => { +app.on('before-quit', () => { global.appQuitting = true; if (mainWindow) { mainWindow.webContents.send('before-quit'); @@ -262,4 +272,4 @@ electron.app.on('before-quit', () => { // installer uses for the shortcut icon. // This makes notifications work on windows 8.1 (and is // a noop on other platforms). -electron.app.setAppUserModelId('com.squirrel.riot-web.Riot'); +app.setAppUserModelId('com.squirrel.riot-web.Riot'); diff --git a/electron_app/src/webcontents-handler.js b/electron_app/src/webcontents-handler.js index 37416ebe96..d566de515a 100644 --- a/electron_app/src/webcontents-handler.js +++ b/electron_app/src/webcontents-handler.js @@ -35,12 +35,15 @@ function onLinkContextMenu(ev, params) { const url = params.linkURL || params.srcURL; const popupMenu = new Menu(); - popupMenu.append(new MenuItem({ - label: url, - click() { - safeOpenURL(url); - }, - })); + // No point trying to open blob: URLs in an external browser: it ain't gonna work. + if (!url.startsWith('blob:')) { + popupMenu.append(new MenuItem({ + label: url, + click() { + safeOpenURL(url); + }, + })); + } if (params.mediaType && params.mediaType === 'image' && !url.startsWith('file://')) { popupMenu.append(new MenuItem({ @@ -55,13 +58,17 @@ function onLinkContextMenu(ev, params) { })); } - popupMenu.append(new MenuItem({ - label: 'Copy Link Address', - click() { - clipboard.writeText(url); - }, - })); - popupMenu.popup(); + // No point offerring to copy a blob: URL either + if (!url.startsWith('blob:')) { + popupMenu.append(new MenuItem({ + label: 'Copy Link Address', + click() { + clipboard.writeText(url); + }, + })); + } + // popup() requires an options object even for no options + popupMenu.popup({}); ev.preventDefault(); } @@ -88,7 +95,8 @@ function onSelectedContextMenu(ev, params) { const items = _CutCopyPasteSelectContextMenus(params); const popupMenu = Menu.buildFromTemplate(items); - popupMenu.popup(); + // popup() requires an options object even for no options + popupMenu.popup({}); ev.preventDefault(); } @@ -101,7 +109,8 @@ function onEditableContextMenu(ev, params) { const popupMenu = Menu.buildFromTemplate(items); - popupMenu.popup(); + // popup() requires an options object even for no options + popupMenu.popup({}); ev.preventDefault(); } diff --git a/package-lock.json b/package-lock.json index 958c27e174..2f775fd70f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "riot-web", - "version": "0.12.2", + "version": "0.16.4-rc.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -260,6 +260,16 @@ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", "dev": true }, + "array-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.9.0" + } + }, "array-map": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", @@ -299,16 +309,6 @@ "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "dev": true }, - "array.prototype.find": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.0.4.tgz", - "integrity": "sha1-VWpcU2LAhkgyPdrrnenRS8GGTJA=", - "dev": true, - "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.9.0" - } - }, "arraybuffer.slice": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", @@ -1483,7 +1483,7 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", "requires": { - "hoek": "4.2.0" + "hoek": "4.2.1" } }, "boxen": { @@ -1877,17 +1877,6 @@ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, - "commonmark": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/commonmark/-/commonmark-0.27.0.tgz", - "integrity": "sha1-2GwmK5YoIelIPGnFR7xYhAwEezQ=", - "requires": { - "entities": "1.1.1", - "mdurl": "1.0.1", - "minimist": "1.2.0", - "string.prototype.repeat": "0.2.0" - } - }, "compare-version": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", @@ -2210,7 +2199,7 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", "requires": { - "hoek": "4.2.0" + "hoek": "4.2.1" } } } @@ -2414,22 +2403,6 @@ "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", "dev": true }, - "disposables": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/disposables/-/disposables-1.0.1.tgz", - "integrity": "sha1-BkcnoltU9QK9griaot+4358bOeM=" - }, - "dnd-core": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/dnd-core/-/dnd-core-2.5.4.tgz", - "integrity": "sha512-BcI782MfTm3wCxeIS5c7tAutyTwEIANtuu3W6/xkoJRwiqhRXKX3BbGlycUxxyzMsKdvvoavxgrC3EMPFNYL9A==", - "requires": { - "asap": "2.0.6", - "invariant": "2.2.2", - "lodash": "4.17.4", - "redux": "3.7.2" - } - }, "doctrine": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.2.3.tgz", @@ -3202,16 +3175,54 @@ } }, "eslint-plugin-react": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz", - "integrity": "sha1-xUNb6wZ3ThLH2y9qut3L+QDNP3g=", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.10.0.tgz", + "integrity": "sha512-18rzWn4AtbSUxFKKM7aCVcj5LXOhOKdwBino3KKWy4psxfPW0YtIbE8WNRDUdyHFL50BeLb6qFd4vpvNYyp7hw==", "dev": true, "requires": { - "array.prototype.find": "2.0.4", - "doctrine": "1.2.3", - "has": "1.0.1", - "jsx-ast-utils": "1.4.1", - "object.assign": "4.0.4" + "doctrine": "2.1.0", + "has": "1.0.3", + "jsx-ast-utils": "2.0.1", + "prop-types": "15.6.2" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "2.0.2" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "1.1.1" + } + }, + "jsx-ast-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", + "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", + "dev": true, + "requires": { + "array-includes": "3.0.3" + } + }, + "prop-types": { + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz", + "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==", + "dev": true, + "requires": { + "loose-envify": "1.3.1", + "object-assign": "4.1.1" + } + } } }, "espree": { @@ -3699,6 +3710,22 @@ } } }, + "focus-trap": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-2.4.6.tgz", + "integrity": "sha512-vWZTPtBU6pBoyWZDRZJHkXsyP2ZCZBHE3DRVXnSVdQKH/mcDtu9S5Kz8CUDyIqpfZfLEyI9rjKJLnc4Y40BRBg==", + "requires": { + "tabbable": "1.1.3" + } + }, + "focus-trap-react": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/focus-trap-react/-/focus-trap-react-3.1.2.tgz", + "integrity": "sha512-MoQmONoy9gRPyrC5DGezkcOMGgx7MtIOAQDHe098UtL2sA2vmucJwEmQisb+8LRXNYFHxuw5zJ1oLFeKu4Mteg==", + "requires": { + "focus-trap": "2.4.6" + } + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -4657,8 +4684,7 @@ "tweetnacl": { "version": "0.14.5", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "uid-number": { "version": "0.0.6", @@ -4939,7 +4965,7 @@ "requires": { "boom": "4.3.1", "cryptiles": "3.1.2", - "hoek": "4.2.0", + "hoek": "4.2.1", "sntp": "2.0.2" } }, @@ -4959,11 +4985,6 @@ "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==" }, - "hoist-non-react-statics": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.3.1.tgz", - "integrity": "sha1-ND24TGAYxlB3iJgkATWhQg7iLOA=" - }, "home-or-tmp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", @@ -5696,12 +5717,6 @@ "verror": "1.10.0" } }, - "jsx-ast-utils": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz", - "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=", - "dev": true - }, "karma": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.1.tgz", @@ -5740,7 +5755,7 @@ "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", "dev": true, "requires": { "fs.realpath": "1.0.0", @@ -6049,6 +6064,11 @@ } } }, + "lolex": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.3.2.tgz", + "integrity": "sha512-A5pN2tkFj7H0dGIAM6MFvHKMJcPnjZsOMvR7ujCjfgW5TbV6H9vb1PgxLtHvjqNZTHsUolz+6/WEO0N1xNx2ng==" + }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", @@ -6108,11 +6128,12 @@ "dev": true }, "matrix-js-sdk": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-0.8.2.tgz", - "integrity": "sha1-e7mrVoXrNCFLOFlMiDn++pY2ViE=", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-0.10.5.tgz", + "integrity": "sha512-3Gt3tVKgkn4ufU9qLyrBxQqILZsSK3J58pmL+1IpDYEgA/lLeBPCtl2s5DL/CngjaWg6knph+1ZJO/fznTyTgQ==", "requires": { "another-json": "0.2.0", + "babel-runtime": "6.26.0", "bluebird": "3.5.1", "browser-request": "0.3.3", "content-type": "1.0.4", @@ -6130,9 +6151,9 @@ } }, "matrix-react-sdk": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/matrix-react-sdk/-/matrix-react-sdk-0.10.2.tgz", - "integrity": "sha1-TNSwkN1P4Jsl4Yh5Z/XOE17U8q4=", + "version": "0.12.8", + "resolved": "https://registry.npmjs.org/matrix-react-sdk/-/matrix-react-sdk-0.12.8.tgz", + "integrity": "sha512-K7Jpj8me8eywtv1LznGlsjiQGuVWIBXA/afshkRiEuSH13lk+XW8+9eQD+GcyZ0/6ziIkMMrmmgDH5gV0xKorA==", "requires": { "babel-runtime": "6.26.0", "bluebird": "3.5.1", @@ -6140,7 +6161,7 @@ "browser-encrypt-attachment": "0.3.0", "browser-request": "0.3.3", "classnames": "2.2.5", - "commonmark": "0.27.0", + "commonmark": "0.28.1", "counterpart": "0.18.3", "draft-js": "0.11.0-alpha", "draft-js-export-html": "0.6.0", @@ -6149,17 +6170,25 @@ "file-saver": "1.3.3", "filesize": "3.5.6", "flux": "2.1.1", + "focus-trap-react": "3.1.2", "fuse.js": "2.7.4", + "gemini-scrollbar": "github:matrix-org/gemini-scrollbar#b302279810d05319ac5ff1bd34910bff32325c7b", + "gfm.css": "1.1.1", "glob": "5.0.15", - "highlight.js": "8.9.1", + "highlight.js": "9.12.0", "isomorphic-fetch": "2.2.1", "linkifyjs": "2.1.5", "lodash": "4.17.4", - "matrix-js-sdk": "0.8.2", + "lolex": "2.3.2", + "matrix-js-sdk": "0.10.5", "optimist": "0.6.1", + "pako": "1.0.6", "prop-types": "15.6.0", + "qrcode-react": "0.1.16", + "querystring": "0.2.0", "react": "15.6.2", "react-addons-css-transition-group": "15.3.2", + "react-beautiful-dnd": "4.0.1", "react-dom": "15.6.2", "react-gemini-scrollbar": "github:matrix-org/react-gemini-scrollbar#5e97aef7e034efc8db1431f4b0efe3b26e249ae9", "sanitize-html": "1.14.1", @@ -6169,10 +6198,28 @@ "whatwg-fetch": "1.1.1" }, "dependencies": { - "highlight.js": { - "version": "8.9.1", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-8.9.1.tgz", - "integrity": "sha1-uKnFSTISqTkvAiK2SclhFJfr+4g=" + "commonmark": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/commonmark/-/commonmark-0.28.1.tgz", + "integrity": "sha1-Buq41SM4uDn6Gi11rwCF7tGxvq4=", + "requires": { + "entities": "1.1.1", + "mdurl": "1.0.1", + "minimist": "1.2.0", + "string.prototype.repeat": "0.2.0" + } + }, + "react-gemini-scrollbar": { + "version": "github:matrix-org/react-gemini-scrollbar#5e97aef7e034efc8db1431f4b0efe3b26e249ae9", + "requires": { + "gemini-scrollbar": "github:matrix-org/gemini-scrollbar#b302279810d05319ac5ff1bd34910bff32325c7b" + } + }, + "velocity-vector": { + "version": "github:vector-im/velocity#059e3b2348f1110888d033974d3109fd5a3af00f", + "requires": { + "jquery": "3.2.1" + } }, "whatwg-fetch": { "version": "1.1.1", @@ -6202,6 +6249,11 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, + "memoize-one": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-3.1.1.tgz", + "integrity": "sha512-YqVh744GsMlZu6xkhGslPSqSurOv6P+kLN2J3ysBZfagLcL5FdRK/0UpgLoL8hwjjEvvAVkjJZyFP+1T6p1vgA==" + }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", @@ -6611,25 +6663,6 @@ "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", "dev": true }, - "object.assign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.0.4.tgz", - "integrity": "sha1-scnMBE7xuf5jYG/BQau7MuFHMMw=", - "dev": true, - "requires": { - "define-properties": "1.1.2", - "function-bind": "1.1.1", - "object-keys": "1.0.11" - }, - "dependencies": { - "object-keys": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", - "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", - "dev": true - } - } - }, "object.entries": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.0.4.tgz", @@ -7322,6 +7355,19 @@ "integrity": "sha1-ZZ3p8s+NzCehSBJ28gU3cnI4LnM=", "dev": true }, + "qr.js": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/qr.js/-/qr.js-0.0.0.tgz", + "integrity": "sha1-ys6GOG9ZoNuAUPqQ2baw6IoeNk8=" + }, + "qrcode-react": { + "version": "0.1.16", + "resolved": "https://registry.npmjs.org/qrcode-react/-/qrcode-react-0.1.16.tgz", + "integrity": "sha512-FK+QCfFqCQMSxUE1byzglERJQkwKqXYvYMCS+/Ad2zACJOfoHkHHtRqsQQPji7lfb1y1qCXLvL+3eP1hAfg8Ng==", + "requires": { + "qr.js": "0.0.0" + } + }, "qs": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", @@ -7344,6 +7390,19 @@ "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=", "dev": true }, + "raf": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.0.tgz", + "integrity": "sha512-pDP/NMRAXoTfrhCfyfSEwJAKLaxBU9eApMeBPB1TkDouZmvPerIClV8lTAd+uF8ZiTaVl69e1FCxQrAd/VTjGw==", + "requires": { + "performance-now": "2.1.0" + } + }, + "raf-schd": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-2.1.2.tgz", + "integrity": "sha512-Orl0IEvMtUCgPddgSxtxreK77UiQz4nPYJy9RggVzu4mKsZkQWiAaG1y9HlYWdvm9xtN348xRaT37qkvL/+A+g==" + }, "randomatic": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", @@ -7448,25 +7507,21 @@ "integrity": "sha1-wStu/cIkfBDae4dw0YUICnsEcVY=", "dev": true }, - "react-dnd": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/react-dnd/-/react-dnd-2.5.4.tgz", - "integrity": "sha512-y9YmnusURc+3KPgvhYKvZ9oCucj51MSZWODyaeV0KFU0cquzA7dCD1g/OIYUKtNoZ+MXtacDngkdud2TklMSjw==", + "react-beautiful-dnd": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-4.0.1.tgz", + "integrity": "sha512-d73RMu4QOFCyjUELLWFyY/EuclnfqulI9pECx+2gIuJvV0ycf1uR88o+1x0RSB9ILD70inHMzCBKNkWVbbt+vA==", "requires": { - "disposables": "1.0.1", - "dnd-core": "2.5.4", - "hoist-non-react-statics": "2.3.1", + "babel-runtime": "6.26.0", "invariant": "2.2.2", - "lodash": "4.17.4", - "prop-types": "15.6.0" - } - }, - "react-dnd-html5-backend": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/react-dnd-html5-backend/-/react-dnd-html5-backend-2.5.4.tgz", - "integrity": "sha512-jDqAkm/hI8Tl4HcsbhkBgB6HgpJR1e+ML1SbfxaegXYiuMxEVQm0FOwEH5WxUoo6fmIG4N+H0rSm59POuZOCaA==", - "requires": { - "lodash": "4.17.4" + "memoize-one": "3.1.1", + "prop-types": "15.6.0", + "raf-schd": "2.1.2", + "react-motion": "0.5.2", + "react-redux": "5.0.7", + "redux": "3.7.2", + "redux-thunk": "2.3.0", + "reselect": "3.0.1" } }, "react-dom": { @@ -7480,10 +7535,51 @@ "prop-types": "15.6.0" } }, - "react-gemini-scrollbar": { - "version": "github:matrix-org/react-gemini-scrollbar#5e97aef7e034efc8db1431f4b0efe3b26e249ae9", + "react-motion": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/react-motion/-/react-motion-0.5.2.tgz", + "integrity": "sha512-9q3YAvHoUiWlP3cK0v+w1N5Z23HXMj4IF4YuvjvWegWqNPfLXsOBE/V7UvQGpXxHFKRQQcNcVQE31g9SB/6qgQ==", "requires": { - "gemini-scrollbar": "github:matrix-org/gemini-scrollbar#b302279810d05319ac5ff1bd34910bff32325c7b" + "performance-now": "0.2.0", + "prop-types": "15.6.0", + "raf": "3.4.0" + }, + "dependencies": { + "performance-now": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=" + } + } + }, + "react-redux": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-5.0.7.tgz", + "integrity": "sha512-5VI8EV5hdgNgyjfmWzBbdrqUkrVRKlyTKk1sGH3jzM2M2Mhj/seQgPXaz6gVAj2lz/nz688AdTqMO18Lr24Zhg==", + "requires": { + "hoist-non-react-statics": "2.5.5", + "invariant": "2.2.2", + "lodash": "4.17.10", + "lodash-es": "4.17.10", + "loose-envify": "1.3.1", + "prop-types": "15.6.0" + }, + "dependencies": { + "hoist-non-react-statics": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", + "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" + }, + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" + }, + "lodash-es": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.10.tgz", + "integrity": "sha512-iesFYPmxYYGTcmQK0sL8bX3TGHyM6b2qREaB4kamHfQyfPJP0xgoGxp19nsH16nsfquLdiyKyX3mQkfiSGV8Rg==" + } } }, "read-all-stream": { @@ -7591,6 +7687,11 @@ "symbol-observable": "1.0.4" } }, + "redux-thunk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.3.0.tgz", + "integrity": "sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw==" + }, "regenerate": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", @@ -7863,6 +7964,11 @@ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", "dev": true }, + "reselect": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-3.0.1.tgz", + "integrity": "sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc=" + }, "resolve": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz", @@ -8167,7 +8273,7 @@ "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.0.2.tgz", "integrity": "sha1-UGQRDwr4X3z9t9a2ekACjOUrSys=", "requires": { - "hoek": "4.2.0" + "hoek": "4.2.1" } }, "socket.io": { @@ -8360,30 +8466,36 @@ "dev": true }, "source-map-loader": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.1.6.tgz", - "integrity": "sha1-wJkD2m1zueU7ftjuUkVZcFHpjpE=", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.2.3.tgz", + "integrity": "sha512-MYbFX9DYxmTQFfy2v8FC1XZwpwHKYxg3SK8Wb7VPBKuhDjz8gi9re2819MsG4p49HDyiOSUKlmZ+nQBArW5CGw==", "dev": true, "requires": { - "async": "0.9.2", + "async": "2.6.1", "loader-utils": "0.2.17", - "source-map": "0.1.43" + "source-map": "0.6.1" }, "dependencies": { "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "dev": true, + "requires": { + "lodash": "4.17.10" + } + }, + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", "dev": true }, "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, @@ -8582,6 +8694,11 @@ "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz", "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0=" }, + "tabbable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-1.1.3.tgz", + "integrity": "sha512-nOWwx35/JuDI4ONuF0ZTo6lYvI0fY0tZCH1ErzY2EXfu4az50ZyiUX8X073FLiZtmWUVlkRnuXsehjJgCw9tYg==" + }, "table": { "version": "3.8.3", "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", @@ -9095,12 +9212,6 @@ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", "dev": true }, - "velocity-vector": { - "version": "github:vector-im/velocity#059e3b2348f1110888d033974d3109fd5a3af00f", - "requires": { - "jquery": "3.2.1" - } - }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", diff --git a/package.json b/package.json index b944bbb6df..e5f321f1e2 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "riot-web", "productName": "Riot", "main": "electron_app/src/electron-main.js", - "version": "0.14.2", + "version": "0.16.4", "description": "A feature-rich client for Matrix.org", "author": "New Vector Ltd.", "repository": { @@ -64,13 +64,13 @@ "gemini-scrollbar": "matrix-org/gemini-scrollbar#b302279", "gfm.css": "^1.1.1", "highlight.js": "^9.0.0", - "matrix-js-sdk": "0.10.2", - "matrix-react-sdk": "0.12.4-rc.1", + "matrix-js-sdk": "0.11.0", + "matrix-react-sdk": "0.13.4", "modernizr": "^3.1.0", "prop-types": "^15.5.10", "react": "^15.6.0", "react-dom": "^15.6.0", - "sanitize-html": "^1.11.1", + "sanitize-html": "^1.18.4", "ua-parser-js": "^0.7.10", "url": "^0.11.0" }, @@ -121,7 +121,7 @@ "minimist": "^1.2.0", "mkdirp": "^0.5.1", "mocha": "^2.4.5", - "parallelshell": "^3.0.2", + "parallelshell": "3.0.1", "postcss-extend": "^1.0.5", "postcss-import": "^11.1.0", "postcss-loader": "^2.1.4", @@ -145,7 +145,7 @@ "build": { "appId": "im.riot.app", "category": "Network", - "electronVersion": "1.8.4", + "electronVersion": "2.0.8", "//asar=false": "https://github.com/electron-userland/electron-builder/issues/675", "asar": false, "dereference": true, diff --git a/res/themes/status/css/_status.scss b/res/themes/status/css/_status.scss index cdfd8e56a6..c99af14e94 100644 --- a/res/themes/status/css/_status.scss +++ b/res/themes/status/css/_status.scss @@ -76,6 +76,8 @@ $focus-brightness: 125%; // red warning colour $warning-color: #F69E98; +$warning-bg-color: #DF2A8B; +$info-bg-color: #2A9EDF; $mention-user-pill-bg-color: #ff0064; $other-user-pill-bg-color: rgba(0, 0, 0, 0.1); @@ -283,4 +285,8 @@ $progressbar-color: #000; .mx_RoomSubList_chevron { top: 8px ! important; -} \ No newline at end of file +} + +.mx_MemberInfo .mx_RoomTile_name { + color: $primary-fg-color ! important; +} diff --git a/scripts/copy-res.js b/scripts/copy-res.js index a2b8788a53..70a06411d9 100755 --- a/scripts/copy-res.js +++ b/scripts/copy-res.js @@ -24,10 +24,12 @@ const INCLUDE_LANGS = [ {'value': 'fr', 'label': 'Français'}, {'value': 'gl', 'label': 'Galego'}, {'value': 'hu', 'label': 'Magyar'}, + {'value': 'it', 'label': 'Italiano'}, {'value': 'ko', 'label': '한국어'}, {'value': 'lv', 'label': 'Latviešu'}, {'value': 'nb_NO', 'label': 'Norwegian Bokmål'}, {'value': 'nl', 'label': 'Nederlands'}, + {'value': 'nn', 'label': 'Norsk Nynorsk'}, {'value': 'pl', 'label': 'Polski'}, {'value': 'pt', 'label': 'Português'}, {'value': 'pt_BR', 'label': 'Português do Brasil'}, diff --git a/src/i18n/strings/ar.json b/src/i18n/strings/ar.json index 7815dce31d..1aa4c70e72 100644 --- a/src/i18n/strings/ar.json +++ b/src/i18n/strings/ar.json @@ -3,5 +3,6 @@ "Dismiss": "تجاهل", "Riot is not supported on mobile web. Install the app?": "رايوت غير مدعوم في وضعية الويب على الهاتف. هل تريد تثبيت التطبيق ؟", "Riot Desktop on %(platformName)s": "الواجهة المكتبية لرايوت على %(platformName)s", - "Unknown device": "جهاز مجهول" + "Unknown device": "جهاز مجهول", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s عبر %(browserName)s على %(osName)s" } diff --git a/src/i18n/strings/bn_IN.json b/src/i18n/strings/bn_IN.json index 0967ef424b..e2c37d4379 100644 --- a/src/i18n/strings/bn_IN.json +++ b/src/i18n/strings/bn_IN.json @@ -1 +1,3 @@ -{} +{ + "Riot is not supported on mobile web. Install the app?": "মোবাইল ওয়েব রায়ট সমর্থন করে না. অ্য়াপ টি ইনস্টল করতে চান?" +} diff --git a/src/i18n/strings/cs.json b/src/i18n/strings/cs.json index b2758dbed2..e2a5e50ef1 100644 --- a/src/i18n/strings/cs.json +++ b/src/i18n/strings/cs.json @@ -34,5 +34,6 @@ "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS a matrix-ios-sdk chat", "Riot/Android & matrix-android-sdk chat": "Riot/Android a matrix-android-sdk chat", "Discussion of the Identity Service API": "Diskuze o API služby identity", - "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Přes vlastní serverové volby se můžete přihlásit k dalším Matrix serverům tak, že zadáte jinou adresu domovského serveru.
Díky tomu můžete v Riotu používat Matrix účet z jiného domovského serveru.

Můžete nastavit i vlastní server identity, ale pak už nebudete moci zvát ani být zván/a skrze e-mailovou adresu." + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Přes vlastní serverové volby se můžete přihlásit k dalším Matrix serverům tak, že zadáte jinou adresu domovského serveru.
Díky tomu můžete v Riotu používat Matrix účet z jiného domovského serveru.

Můžete nastavit i vlastní server identity, ale pak už nebudete moci zvát ani být zván/a skrze e-mailovou adresu.", + "Co-ordination for Riot translators": "Spolupráce pro překladatele Riot" } diff --git a/src/i18n/strings/el.json b/src/i18n/strings/el.json index 63558c0842..b34c3b1174 100644 --- a/src/i18n/strings/el.json +++ b/src/i18n/strings/el.json @@ -6,7 +6,7 @@ "Unknown device": "Άγνωστη συσκευή", "You need to be using HTTPS to place a screen-sharing call.": "Απαιτείται η χρήση HTTPS για το διαμοιρασμό της επιφάνειας εργασίας μέσω κλήσης.", "Riot is not supported on mobile web. Install the app?": "Το Riot δεν υποστηρίζεται από περιηγητές κινητών. Θέλετε να εγκαταστήσετε την εφαρμογή;", - "powered by Matrix": "βασισμένο στο πρωτόκολλο Matrix", + "powered by Matrix": "βασισμένο στο Matrix", "Welcome to Riot.im": "Καλώς ήλθατε στο Riot.im", "Decentralised, encrypted chat & collaboration powered by [matrix]": "Αποκεντρωμένη, κρυπτογραφημένη συνομιλία & συνεργασία με τη βοήθεια του [matrix]", "Search the room directory": "Αναζήτηση του ευρετηρίου δωματίων", @@ -22,16 +22,18 @@ "Community-run support for Synapse": "Κοινοτική υποστήριξη για το Synapse", "Admin support for Dendrite": "Υποστήριξη διαχειριστή για το Dendrite", "Announcements about Synapse releases": "Ανακοινώσεις σχετικά με τις εκδόσεις του Synapse", - "Support for those using and running matrix-appservice-irc": "Υποστήριξη για τους χρήστες που χρησιμοποιούν το matrix-appservice-irc", + "Support for those using and running matrix-appservice-irc": "Υποστήριξη για τους χρήστες του matrix-appservice-irc", "Building services on Matrix": "Ανάπτυξη υπηρεσιών στο Matrix", "Support for those using the Matrix spec": "Υποστήριξη για τους χρήστες που χρησιμοποιούν το Matrix spec", "Design and implementation of E2E in Matrix": "Σχεδιασμός και υλοποίηση του E2E στο Matrix", "Implementing VR services with Matrix": "Υλοποίηση υπηρεσίων VR με το Matrix", "Implementing VoIP services with Matrix": "Υλοποίηση υπηρεσίων VoIP με το Matrix", "Discussion of the Identity Service API": "Συζήτηση σχετικά με το Identity Service API", - "Contributing code to Matrix and Riot": "Συνεισφορά κώδικα στο Matrix και Riot", + "Contributing code to Matrix and Riot": "Συνεισφορά κώδικα στο Matrix και στο Riot", "Dev chat for the Riot/Web dev team": "Συζήτηση με την ομάδα ανάπτυξης του Riot/Web", "Dev chat for the Dendrite dev team": "Συζήτηση με την ομάδα ανάπτυξης του Dendrite", "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Αρκετά δωμάτια υπάρχουν ήδη στο Matrix, συνδεδεμένα σε υπάρχοντα δίκτυα (Slack, IRC, Gitter κ.λπ) ή αυτόνομα. Ρίξτε μια ματιά στο ευρετήριο!", - "Support for those using, running and writing other bridges": "Υποστήριξη για τους χρήστες που χρησιμοποιούν ή αναπτύσσουν εφαρμογές ενσωμάτωσης για το Matrix" + "Support for those using, running and writing other bridges": "Υποστήριξη για τους χρήστες που χρησιμοποιούν ή αναπτύσσουν εφαρμογές ενσωμάτωσης για το Matrix", + "Co-ordination for Riot translators": "Συντονισμός για μεταφραστές του Riot", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Μπορείτε να χρησιμοποιήσετε τις προσαρμοσμένες ρυθμίσεις διακομιστή για να συνδεθείτε σε άλλους διακομιστές Matrix δίνοντας ένα διαφορετικό URL διακομιστή.
Αυτό σας επιτρέπει να χρησιμοποιήσετε το Riot με έναν υπάρχοντα λογαριασμό Matrix σε έναν διαφορετικό διακομιστή.

Μπορείτε επίσης να ορίσετε έναν προσαρμοσμένο διακομιστή ταυτοποίησης αλλά δεν θα μπορείτε να προσκαλέσετε χρήστες ή να προσκληθείτε εσείς μέσω διεύθυνσης ηλεκτρονικού ταχυδρομίου." } diff --git a/src/i18n/strings/en_US.json b/src/i18n/strings/en_US.json index 7803498a73..e5b060cf70 100644 --- a/src/i18n/strings/en_US.json +++ b/src/i18n/strings/en_US.json @@ -33,5 +33,7 @@ "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!", "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk chat", "Riot/Web & Desktop chat": "Riot/Web & Desktop chat", - "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk chat" + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk chat", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.", + "Co-ordination for Riot translators": "Co-ordination for Riot translators" } diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json index bf3cfced42..921b4566d8 100644 --- a/src/i18n/strings/es.json +++ b/src/i18n/strings/es.json @@ -34,5 +34,6 @@ "Dev chat for the Riot/Web dev team": "Conversaciones del equipo de desarrollo de Riot/Web", "Dev chat for the Dendrite dev team": "Conversaciones del equipo de desarrollo de Dendrite", "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Muchas salas ya están disponibles en Matrix, enlazadas a redes existentes (Slack, IRC, Gitter, etc) o independientes. ¡Revisa el directorio!", - "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Puedes usar las opciones del servidor personalizado para acceder a otros servidores Matrix especificando su URL.
Esto te permite usar Riot con una cuenta Matrix existente en un servidor doméstico distinto.

También puedes establecer un servidor de identidad personalizado pero no podrás invitar a otros usuarios usando su dirección de correo electrónico, y tampoco ser invitado por el tuyo." + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Puedes usar las opciones del servidor personalizado para acceder a otros servidores Matrix especificando su URL.
Esto te permite usar Riot con una cuenta Matrix existente en un servidor doméstico distinto.

También puedes establecer un servidor de identidad personalizado pero no podrás invitar a otros usuarios usando su dirección de correo electrónico, y tampoco ser invitado por el tuyo.", + "Co-ordination for Riot translators": "Co-odinación de traductores de Riot" } diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 98c5e836c8..3bdf9466e4 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -4,9 +4,9 @@ "powered by Matrix": "propulsé par Matrix", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s dans %(browserName)s sous %(osName)s", "Riot Desktop on %(platformName)s": "Version bureau de Riot sur %(platformName)s", - "Riot is not supported on mobile web. Install the app?": "Riot n’est pas supporté sur les appareils mobiles. Installer l’application ?", + "Riot is not supported on mobile web. Install the app?": "Riot n’est pas disponible en version web mobile. Installer l’application ?", "Unknown device": "Appareil inconnu", - "You need to be using HTTPS to place a screen-sharing call.": "Vous devez utiliser HTTPS pour effectuer un appel en partage d’écran.", + "You need to be using HTTPS to place a screen-sharing call.": "Vous devez utiliser HTTPS pour effectuer un appel avec partage d’écran.", "Welcome to Riot.im": "Bienvenue sur Riot.im", "Chat with Riot Bot": "Discussion avec Riot Bot", "Search the room directory": "Rechercher dans le répertoire de salons", diff --git a/src/i18n/strings/gl.json b/src/i18n/strings/gl.json index a3399135fa..be3e3cc072 100644 --- a/src/i18n/strings/gl.json +++ b/src/i18n/strings/gl.json @@ -4,35 +4,36 @@ "Dismiss": "Rexeitar", "powered by Matrix": "funciona grazas a Matrix", "Riot Desktop on %(platformName)s": "Riot Desktop en %(platformName)s", - "Riot is not supported on mobile web. Install the app?": "Riot no se pode executar na web móbil. Instalar a app?", + "Riot is not supported on mobile web. Install the app?": "Riot non se pode executar na web do móbil. Instalar a aplicación?", "Unknown device": "Dispositivo descoñecido", "You need to be using HTTPS to place a screen-sharing call.": "Precisa utilizar HTTPS para establecer unha chamada de pantalla compartida.", - "Welcome to Riot.im": "Benvida a Riot.im", - "Decentralised, encrypted chat & collaboration powered by [matrix]": "Chat & colaboración descentralizados e cifrados grazas a [matrix]", + "Welcome to Riot.im": "Benvida/o a Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Conversas e colaboración descentralizada e cifrada grazas a [matrix]", "Search the room directory": "Buscar no directorio de salas", - "Chat with Riot Bot": "Chat co Bot de Riot", - "Get started with some tips from Riot Bot!": "Iníciese con algúns consellos do Bot de Riot!", + "Chat with Riot Bot": "Conversa co bot de Riot", + "Get started with some tips from Riot Bot!": "Iníciese con algúns consellos do bot de Riot!", "General discussion about Matrix and Riot": "Discusión xeral sobre Matrix e Riot", - "Discussion of all things Matrix!": "Conversa sobre to o relativo a Matrix!", - "Riot/Web & Desktop chat": "Riot/Web & chat de Escritorio", - "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & chat matrix-ios-sdk", + "Discussion of all things Matrix!": "Conversa sobre todo o relativo a Matrix!", + "Riot/Web & Desktop chat": "Riot/Web & sala de conversas para escritorio", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & sala de conversas matrix-ios-sdk", "Matrix technical discussions": "Discusións técnicas sobre Matrix", - "Running Matrix services": "Servizos correndo sobre Matrix", + "Running Matrix services": "Servizos que empregan Matrix", "Community-run support for Synapse": "Axuda da comunidade para Synapse", - "Admin support for Dendrite": "Axuda administrador para Dendrite", + "Admin support for Dendrite": "Axuda de administrador para Dendrite", "Announcements about Synapse releases": "Anuncios sobre lanzamentos de Synapse", "Support for those using and running matrix-appservice-irc": "Axuda para quen usa matrix-appservice-irc", "Building services on Matrix": "Deseñando servizos sobre Matrix", - "Support for those using the Matrix spec": "Axuda para quen usa a especificación Matrix", + "Support for those using the Matrix spec": "Axuda para quen usa a especificación de Matrix", "Design and implementation of E2E in Matrix": "Deseño e implementación de E2E en Matrix", "Implementing VR services with Matrix": "Implementando servizos de RV con Matrix", "Implementing VoIP services with Matrix": "Implementación de servizos VoIP con Matrix", - "Discussion of the Identity Service API": "Conversa sobre a Identity Service API", - "Support for those using, running and writing other bridges": "Axuda para que utiliza, executa e desenvolve outras pontes", - "Contributing code to Matrix and Riot": "Contribuíndo ao código en Matrix e Riot", - "Dev chat for the Riot/Web dev team": "Chat para o equipo de desenvolvemento do Riot/Web", - "Dev chat for the Dendrite dev team": "Chat para o equipo de desenvolvemento de Dendrite", - "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Xa existen multitude de salas en Matrix, ligadas a redes existentes (Slack, IRC, Gitter etc) ou independentes. Busque no directorio!", - "Riot/Android & matrix-android-sdk chat": "Chat para Riot/Android & matrix-android-sdk", - "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Vostede pode utilizar as opcións de servidor personalizado para conectarse a outros servidores Matrix indicando o enderezo URL do Servidor.
Esto permítelle utilizar Riot con unha conta Matrix existente en outro servidor.

Tamén pode indicar un servidor de identidade pero non poderá convidar a usarias polo seu enderezo de correo electrónico, o ser convidada vostede por correo electrónico." + "Discussion of the Identity Service API": "Conversa sobre a API do servizo de identificación", + "Support for those using, running and writing other bridges": "Axuda para quen está a utilizar, executar ou desenvolver outras pontes", + "Contributing code to Matrix and Riot": "Contribuíndo ao código de Matrix e Riot", + "Dev chat for the Riot/Web dev team": "Sala de conversa para o equipo de desenvolvemento de Riot/Web", + "Dev chat for the Dendrite dev team": "Sala de conversas para o equipo de desenvolvemento de Dendrite", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Xa existen multitude de salas en Matrix ben ligadas a redes existentes (Slack, IRC, Gitter etc) ou ben independentes. Busque no directorio!", + "Riot/Android & matrix-android-sdk chat": "Riot/Android & sala de conversas matrix-android-sdk", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Pode utilizar as opcións persoais de servidor para conectarse a outros servidores Matrix indicando o enderezo URL dese servidor.
Isto permítelle utilizar Riot cunha conta Matrix existente en outro servidor.

Tamén pode empregar un servidor personalizado de identidade mais nese caso nin se poderán convidar a outros usuarios empregando os correo electrónicos nin tampouco eles o poderán convidar a vostede por correo.", + "Co-ordination for Riot translators": "Coordinación para tradutora/es de Riot" } diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index 31591e3410..ad20927eec 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -34,6 +34,6 @@ "Dev chat for the Riot/Web dev team": "Csevegés a Riot/Web fejlesztői csapatával fejlesztőknek", "Dev chat for the Dendrite dev team": "Csevegés a Dendrite fejlesztői csapatával fejlesztőknek", "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Már sok szoba van a Matrixon: más hálózatokkal (Slack, IRC, Gitter stb.) összekapcsolt és függetlenek szobák is. Nézd meg a szobajegyzéket!", - "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Bejelentkezhetsz más Matrix szerverre is az egyedi szerverbeállításoknál megadott másik szerver URL-jével.
Így használhatod a Riotot egy már máshol meglévő Matrix fiókkal is.

Beállíthatsz egyéni identitásszervert is, de akkor nem tudsz más felhasználókat e-mail címmel meghívni, illetve ők sem tudnak téged.", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Bejelentkezhetsz más Matrix szerverre is az egyedi szerverbeállításoknál megadott Matrix szerver URL-jével.
Így használhatod a Riotot egy már máshol meglévő Matrix fiókkal is.

Beállíthatsz egyéni identitásszervert is, de akkor nem tudsz más felhasználókat e-mail címmel meghívni, illetve ők sem tudnak téged.", "Co-ordination for Riot translators": "Koordináció Riot fordítók számára" } diff --git a/src/i18n/strings/id.json b/src/i18n/strings/id.json index 40636f3af6..7e202c7cbd 100644 --- a/src/i18n/strings/id.json +++ b/src/i18n/strings/id.json @@ -34,5 +34,6 @@ "Dev chat for the Riot/Web dev team": "Obrolan Developer untuk tim developer Riot/Web", "Dev chat for the Dendrite dev team": "Obrolan Developer untuk tim developer Dendrite", "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Banyak ruang sudah tersedia di Matrix, terhubung ke jaringan yang sudah ada (Slack, IRC, Gitter dls) atau independen. Cek direktori!", - "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Anda dapat menggunakan opsi lain untuk mendaftar pada server Matrix yang berbeda dengan memasukkan URL server yang sesuai.
Hal ini memungkinkan anda untuk menggunakan Riot dengan akun matrix yang telah tersedia pada Home server yang berbeda.

Anda juga dapat melakukan pengubahan identitas server akan tetapi akan berakibat tidak dapat mengundang pengguna melalui email, atau diundang melalui email." + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Anda dapat menggunakan opsi lain untuk mendaftar pada server Matrix yang berbeda dengan memasukkan URL server yang sesuai.
Hal ini memungkinkan anda untuk menggunakan Riot dengan akun matrix yang telah tersedia pada Home server yang berbeda.

Anda juga dapat melakukan pengubahan identitas server akan tetapi akan berakibat tidak dapat mengundang pengguna melalui email, atau diundang melalui email.", + "Co-ordination for Riot translators": "Koordinasi dengan penerjemah Riot" } diff --git a/src/i18n/strings/is.json b/src/i18n/strings/is.json index 7e9aad3a07..92babad122 100644 --- a/src/i18n/strings/is.json +++ b/src/i18n/strings/is.json @@ -23,5 +23,17 @@ "Co-ordination for Riot translators": "Yfirlit fyrir þýðendur Riot", "Search the room directory": "Leita í herbergisskránni", "Building services on Matrix": "Að byggja þjónustur á Matrix", - "Design and implementation of E2E in Matrix": "Hönnun og framkvæmd E2E í Matrix" + "Design and implementation of E2E in Matrix": "Hönnun og framkvæmd E2E í Matrix", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Þú getur notað sérsniðna valkosti til að skrá inn á aðra Matrix-vefþjóna með því að tilgreina aðra slóð á Heimavefþjón.
Þetta gerir þér kleift að nota Riot með fyrirliggjandi Matrix notandaaðgangi á öðrum heimaþjóni.

Þú getur líka stillt sérsniðinn auðkenningarþjón, en þá getur þú ekki boðið notendum eftir tölvupóstfangi eða sjálfur fengið boð með tölvupósti.", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Dulritað dreifvinnsluspjall & samstarfstól keyrt með [matrix]", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Margar spjallrásir eru til í Matrix, tengdar við fyrirliggjandi netkerfi (Slack, IRC, Gitter, o.s.frv.) eða óháð. Skoðaðu skráninguna!", + "Community-run support for Synapse": "Aðstoð frá samfélaginu fyrir Synapse", + "Admin support for Dendrite": "Kerfisstjórnarstuðningur fyrir Dendrite", + "Announcements about Synapse releases": "Tilkynningar um Synapse útgáfur", + "Support for those using and running matrix-appservice-irc": "Stuðningur við þá sem nota og keyra matrix-appservice-irc", + "Support for those using the Matrix spec": "Stuðningur við þá sem nota tæknilega Matrix eiginleika", + "Discussion of the Identity Service API": "Umræða um Identity Service API-kerfisviðmót", + "Support for those using, running and writing other bridges": "Stuðningur við þá sem nota, keyra og skrifa aðrar brýr", + "Dev chat for the Riot/Web dev team": "Forritaraspjall fyrir Riot/vefþróunarhópinn", + "Dev chat for the Dendrite dev team": "Forritaraspjall fyrir Dendrite þróunarhópinn" } diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json index 58a812d6f6..01160f0b4d 100644 --- a/src/i18n/strings/it.json +++ b/src/i18n/strings/it.json @@ -1,6 +1,6 @@ { "Custom Server Options": "Opzioni Server Personalizzate", - "Dismiss": "Scarta", + "Dismiss": "Chiudi", "powered by Matrix": "offerto da Matrix", "Riot Desktop on %(platformName)s": "Riot Desktop su %(platformName)s", "Riot is not supported on mobile web. Install the app?": "Riot non è supportato sul web mobile. Vuoi installare l'applicazione?", @@ -34,5 +34,6 @@ "Dev chat for the Riot/Web dev team": "Chat per gli sviluppatori di Riot/Web", "Dev chat for the Dendrite dev team": "Chat per gli sviluppatori di Dendrite", "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Esistono già molte stanze in Matrix, collegate a reti già esistenti (Slack, IRC, Gitter ecc) o indipendenti. Dai un'occhiata all'elenco!", - "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Puoi usare le opzioni server personalizzate per accedere ad altri server Matrix specificando l'indirizzo dell'home server.
Questo permette di usare Matrix con un account esistente su un home server diverso.

È anche possibile impostare un diverso identity server, ma in quel caso non sarà possibile invitare utenti attraverso l'indirizzo e-mail o essere invitati attraverso l'indirizzo e-mail." + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Puoi usare le opzioni server personalizzate per accedere ad altri server Matrix specificando l'indirizzo dell'home server.
Questo permette di usare Matrix con un account esistente su un home server diverso.

È anche possibile impostare un diverso identity server, ma in quel caso non sarà possibile invitare utenti attraverso l'indirizzo e-mail o essere invitati attraverso l'indirizzo e-mail.", + "Co-ordination for Riot translators": "Coordinazione per i traduttori di Riot" } diff --git a/src/i18n/strings/ka.json b/src/i18n/strings/ka.json new file mode 100644 index 0000000000..76e22da642 --- /dev/null +++ b/src/i18n/strings/ka.json @@ -0,0 +1,39 @@ +{ + "Riot is not supported on mobile web. Install the app?": "Riot ვებსაიტს არ აქვს მხარდაჭერა მობილური მოწყობილობებისთვის. გსურთ აპლიკაციის დაყენება?", + "Riot Desktop on %(platformName)s": "Riot Desktop-ი %(platformName)s-ზე", + "Unknown device": "უცნობი მოწყობილობა", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s-ი %(browserName)s-ით %(osName)s-იდან", + "You need to be using HTTPS to place a screen-sharing call.": "ეკრანის გაზიარების ფუნქციის მქონე ზარისთვის საჭიროა, იყენებდეთ HTTPS-ს.", + "Custom Server Options": "პერსონალიზებული სერვერის პარამეტრები", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "სხვა Matrix სერვერებზე შესასვლელად შეგიძლიათ გამოიყენოთ პერსონალიზებული სერვერის პარამეტრები განსხვავებული მთავარი სერვერის URL-ის მითითებით
ეს გაძლევთ საშუალებას, გამოიყენოთ Riot-ი არსებულ Matrix ანგარიშით სხვა მთავარ სერვერზე.

თქვენ ასევე შეგიძლიათ დააყენოთ პერსონალიზებული იდენტუროის სერვერი, მაგრამ თქვენ ვერ მოიწვევთ მომხმარებლებს ელფოსტის მისამართით და თავად თქვენ ვერ მოგიწვევენ ელფოსტის მისამართით.", + "Dismiss": "უარის თქმა", + "powered by Matrix": "Matrix-ზე დაფუძნებული", + "Welcome to Riot.im": "კეთილი იყოს თქვენი მობრძანება Riot.im-ზე", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "დეცენტრალიზებული, დაშიფრული ჩატი & კოლაბორაცია, დაფუძნებული [matrix]-ზე", + "Search the room directory": "მოძებნა ოთახის სიაში", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "მრავალი ოთახი უკვე არსებობს Matrix-ში, რომლებიც არიან დაკავშირებული არსებულ ქსელებთან (Slack, IRC, Glitter და ა.შ) ან დამოუკიდებელი. შეამოწმეთ სია!", + "Chat with Riot Bot": "ისაუბრეთ Riot-ის Bot-თან", + "Get started with some tips from Riot Bot!": "დაიწყეთ რჩევებით Riot-ის Bot-ისგან!", + "General discussion about Matrix and Riot": "ზოგადი დისკუსია Matrix-სა და Riot-ზე", + "Discussion of all things Matrix!": "დისკუსია ყველაფერზე, რაც ეხება Matrix-ს!", + "Riot/Web & Desktop chat": "Riot/ვებ-ისა & Desktop-ის ჩატი", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS-ისა & matrix-ios-sdk-ის ჩატი", + "Riot/Android & matrix-android-sdk chat": "Riot/ანდროიდისა & matrix-android-sdk-ის ჩატი", + "Matrix technical discussions": "Matrix-ის ტექნიკური დისკუსიები", + "Running Matrix services": "Matrix-ის სერვისების გამოყენება", + "Community-run support for Synapse": "საზოგადოებისმიერი მხარდაჭერა Synapse-ისთვის", + "Admin support for Dendrite": "ადმინისტრატორის მხარდაჭერა Dendrite-ისთვის", + "Announcements about Synapse releases": "განცხადებები Synapse-ის გამოშვებებთან დაკავშირებით", + "Support for those using and running matrix-appservice-irc": "მხარდაჭერა მათთვის, ვინც იყენებს matrix-appservice-irc-ს", + "Building services on Matrix": "სერვისების Matrix-ზე დაფუძნებით გამომუშავება", + "Support for those using the Matrix spec": "მხარდაჭერა Matrix სპეციფიკაციების გამოყენებასთან დაკავშირებულ კითხვებზე", + "Design and implementation of E2E in Matrix": "პირით-პირამდე დაშიფვრის დაგეგმვა და შესრულება", + "Implementing VR services with Matrix": "VR სერვისების Matrix-ით შესრულება", + "Implementing VoIP services with Matrix": "VoIP სერვისების Matrix-ით შესრულება", + "Discussion of the Identity Service API": "იდენტიფიკაციის სერვისის API-ს დისკუსია", + "Support for those using, running and writing other bridges": "მხარდაჭერა მათთვის, ვინც იყენებს და წერს სხვა ხიდებს", + "Contributing code to Matrix and Riot": "Matrix-ის და Riot-ის გამომუშავებაში მონაწილეობის მიღება", + "Dev chat for the Riot/Web dev team": "დეველოპერების ჩატი Riot/ვებ დეველოპერების გუნდთან", + "Dev chat for the Dendrite dev team": "დეველოპერების ჩატი Dendrite-ის დეველოპერების გუნდთან", + "Co-ordination for Riot translators": "კოორდინაცია Riot-ის მთარგმნელებისთვის" +} diff --git a/src/i18n/strings/ko.json b/src/i18n/strings/ko.json index 318c42bb90..b976664c58 100644 --- a/src/i18n/strings/ko.json +++ b/src/i18n/strings/ko.json @@ -1,37 +1,37 @@ { "Custom Server Options": "사용자 지정 서버 설정", "Dismiss": "없애기", - "powered by Matrix": "매트릭스의 지원을 받고 있어요", - "Riot Desktop on %(platformName)s": "%(platformName)s에서 라이엇 컴퓨터판", - "Riot is not supported on mobile web. Install the app?": "라이엇은 모바일 사이트를 지원하지 않아요. 앱을 설치하시겠어요?", + "powered by Matrix": "Matrix의 지원을 받고 있습니다", + "Riot Desktop on %(platformName)s": "%(platformName)s PC용 Riot", + "Riot is not supported on mobile web. Install the app?": "”Riot은 모바일 사이트를 지원하지 않습니다. 앱을 설치하시겠어요?", "Unknown device": "알 수 없는 장치", - "Welcome to Riot.im": "라이엇에 오신 걸 환영해요", - "Chat with Riot Bot": "Riot 봇과 이야기하기", + "Welcome to Riot.im": "Riot에 오신 걸 환영해요", + "Chat with Riot Bot": "Riot 봇과 대화하기", "%(appName)s via %(browserName)s on %(osName)s": "%(osName)s의 %(browserName)s을 통한 %(appName)s", - "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를 사용해야 합니다.", "Decentralised, encrypted chat & collaboration powered by [matrix]": "분산되고, 암호화된 대화 & [matrix]의 지원으로 협력", - "Search the room directory": "방 목록을 찾기", + "Search the room directory": "방 목록 찾기", "Get started with some tips from Riot Bot!": "라이엇 봇에게 조언을 받고 시작하세요!", - "General discussion about Matrix and Riot": "매트릭스와 라이엇에 대한 일반 논의", - "Discussion of all things Matrix!": "매트릭스의 모든 것에 대한 토론!", - "Riot/Web & Desktop chat": "라이엇/웹 & 컴퓨터 이야기", - "Riot/iOS & matrix-ios-sdk chat": "라이엇/IOS & matrix-ios-sdk 대화", - "Riot/Android & matrix-android-sdk chat": "매트릭스/안드로이드 & matrix-ios-sdk 대화", - "Matrix technical discussions": "매트릭스 기술 논의", - "Running Matrix services": "매트릭스 서비스 실행", + "General discussion about Matrix and Riot": "Matrix와 Riot에 대한 일반적인 토론", + "Discussion of all things Matrix!": "모든 Matrix에 대한 토론!", + "Riot/Web & Desktop chat": "Riot/웹 & PC 대화", + "Riot/iOS & matrix-ios-sdk chat": "Riot/IOS & matrix-ios-sdk 대화", + "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-ios-sdk 대화", + "Matrix technical discussions": "Matrix에 대한 기술적인 토론", + "Running Matrix services": "Matrix 서비스 실행 중", "Community-run support for Synapse": "시냅스 커뮤니티 운영 지원", - "Admin support for Dendrite": "덴드라이트 관리 지원", - "Announcements about Synapse releases": "시냅스 공개 발표", - "Support for those using and running matrix-appservice-irc": "matrix-appservice-irc를 사용하고 운영하는 사람들을 지원", - "Building services on Matrix": "매트릭스에서 서비스 구축", + "Admin support for Dendrite": "Dendrite 관리 지원", + "Announcements about Synapse releases": "Synapse 출시에 대한 발표", + "Support for those using and running matrix-appservice-irc": "matrix-appservice-irc를 사용하고 운영하는 사람들을 위한 지원", + "Building services on Matrix": "Matrix에서 서비스 구축", "Support for those using the Matrix spec": "Matrix spec을 사용하는 사람들을 지원", "Design and implementation of E2E in Matrix": "매트릭스에서 E2E 설계와 구현", "Implementing VR services with Matrix": "매트릭스로 VR 서비스 구현", - "Implementing VoIP services with Matrix": "매트릭스로 인터넷전화 서비스 구현", + "Implementing VoIP services with Matrix": "Matrix로 인터넷전화 서비스 구현", "Discussion of the Identity Service API": "ID 서비스 API에 대한 논의", - "Support for those using, running and writing other bridges": "다른 브릿지를 사용하고, 운영하고, 기록하는 사람들을 지원", - "Contributing code to Matrix and Riot": "매트릭스와 라이엇에 코드 기여하기", - "Dev chat for the Riot/Web dev team": "라이엇/웹 개발 팀을 위한 개발자 대화", + "Support for those using, running and writing other bridges": "다른 브릿지를 사용하고, 운영하고, 기록하는 사람들을 위한 지원", + "Contributing code to Matrix and Riot": "Matrix와 Riot에 코드 기여하기", + "Dev chat for the Riot/Web dev team": "Riot/웹 개발 팀을 위한 개발자 대화", "Dev chat for the Dendrite dev team": "덴드라이트 개발 팀을 위한 개발자 대화", - "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "기존 네트워크(Slack, IRC, Gitter 등)에 연결되있거나 독립된 많은 방들이 이미 매트릭스에 있어요. 목록을 확인해보세요!" + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "기존 네트워크(Slack, IRC, Gitter 등)에 연결되있거나 독립된 많은 방이 이미 Matrix에 있습니다. 목록을 확인해보세요!" } diff --git a/src/i18n/strings/lt.json b/src/i18n/strings/lt.json index f3d6340da8..3129dcb96b 100644 --- a/src/i18n/strings/lt.json +++ b/src/i18n/strings/lt.json @@ -1,38 +1,39 @@ { "Unknown device": "Nežinomas įrenginys", - "powered by Matrix": "palaikomas Matrix", + "powered by Matrix": "veikia su Matrix", "Welcome to Riot.im": "Sveiki atvykę į Riot.im", "Chat with Riot Bot": "Kalbėtis su Riot robotu", "General discussion about Matrix and Riot": "Bendros diskusijos apie Matrix ir Riot", "Matrix technical discussions": "Matrix techninės diskusijos", "Riot is not supported on mobile web. Install the app?": "Riot nėra palaikoma naršant svetainėje mobiliaisiais įrenginiais. Įdiegti programėlę?", - "Riot Desktop on %(platformName)s": "Riot Desktop, %(platformName)s", + "Riot Desktop on %(platformName)s": "Riot Desktop, naudojant %(platformName)s", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s per %(browserName)s, naudojant %(osName)s", "You need to be using HTTPS to place a screen-sharing call.": "Norint skambinti su ekrano bendrinimo funkcija būtina naudoti HTTPS.", - "Custom Server Options": "Pasirinktiniai serverio nustatymai", - "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Norėdami jungtis prie kito nei Matrix serverio galite pasirinktinio serverio nustatymuose nurodyti kito serverio URL adresą.
Ši funkcija leis naudoti Riot su esama Matrix serverio paskyrą kituose serveriuose.

Taip pat galite nurodyti pasirinktinį identifikavimo serverį, bet tuomet negalėsite kviesti kitų vartotojų el. paštu ar jie jūsų.", - "Dismiss": "Nutraukti", - "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralizuotas, šifruotas čatas; bendradarbiavimas palaikomas [matrix]", + "Custom Server Options": "Tinkinto serverio parametrai", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Norėdami prisijungti prie kito nei Matrix serverio, galite naudoti tinkinto serverio parametrus ir nurodyti kito serverio URL adresą.
Tai leis jums naudoti Riot su esama Matrix paskyra kituose serveriuose.

Taip pat galite nustatyti tinkintą tapatybės serverį, tačiau tuomet negalėsite pakviesti kitus naudotojus pagal el. paštą, o taip pat ir jie negalės pakviesti jūsų.", + "Dismiss": "Atmesti", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralizuoti, šifruoti pokalbiai ir bendradarbiavimas, veikiantis su [matrix]", "Search the room directory": "Ieškoti kambarių kataloge", - "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Daugybė kambarių yra prisijungę prie Matrix, kurie yra susieti su egzistuojančiais tinklais (Slack, IRC, Gitter etc) arba nepriklausomi. Patikrinkite kambarių katalogą!", - "Get started with some tips from Riot Bot!": "Pradėkite su patarimais nuo Riot roboto!", - "Discussion of all things Matrix!": "Diskusijos apie viską Matrix!", - "Riot/Web & Desktop chat": "Riot/Web & Darbalaukio čatas", - "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk chat", - "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk chat", - "Running Matrix services": "Vykdant Matrix servisus", - "Community-run support for Synapse": "Bendruomenės Synapse palaikymas", - "Admin support for Dendrite": "Administratoriaus Dendrite palaikymas", - "Announcements about Synapse releases": "Pranešimai apie Synapse naujinimus", - "Support for those using and running matrix-appservice-irc": "Palaikymas skirtas matrix-appservice-irc naudotojams", - "Building services on Matrix": "Servisų kūrimas ant Matrix", - "Support for those using the Matrix spec": "Palaikymas skirtas Matrix spec", - "Design and implementation of E2E in Matrix": "E2E dizainas ir įgyvendinimas Matrix'e", - "Implementing VR services with Matrix": "VR serviso įgyvendinimas su Matrix", - "Implementing VoIP services with Matrix": "VoIP serviso įgyvendinimas su Matrix", - "Discussion of the Identity Service API": "Diskusijos apie identifikavimo serviso API", - "Support for those using, running and writing other bridges": "Palaikymas skirtas tiems kas naudoja kitus tiltus", - "Contributing code to Matrix and Riot": "Contributing code to Matrix and Riot", - "Dev chat for the Riot/Web dev team": "Kūrėjų čatas Riot/Web dev team", - "Dev chat for the Dendrite dev team": "Kūrėjų čatas Dendrite dev team" + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Daugybė kambarių jau yra Matrix, susieti prie esamų tinklų (Slack, IRC, Gitter ir t.t.) arba nepriklausomi. Pasižvalgykite kataloge!", + "Get started with some tips from Riot Bot!": "Pradėkite darbo pradžią nuo Riot roboto patarimų!", + "Discussion of all things Matrix!": "Diskusijos apie viską, kas susiję su Matrix!", + "Riot/Web & Desktop chat": "Pokalbiai apie Riot/Web ir Desktop", + "Riot/iOS & matrix-ios-sdk chat": "Pokalbiai apie Riot/iOS ir matrix-ios-sdk", + "Riot/Android & matrix-android-sdk chat": "Pokalbiai apie Riot/Android ir matrix-android-sdk", + "Running Matrix services": "Matrix paslaugų paleidimas", + "Community-run support for Synapse": "Su Synapse susijęs bendruomenės palaikymas", + "Admin support for Dendrite": "Dendrite administratorių palaikymas", + "Announcements about Synapse releases": "Skelbimai apie Synapse laidas", + "Support for those using and running matrix-appservice-irc": "Palaikymas skirtas besinaudojantiems ir prižiūrintiems matrix-appservice-irc", + "Building services on Matrix": "Paslaugų kūrimas, naudojant Matrix", + "Support for those using the Matrix spec": "Palaikymas skirtas besinaudojantiems Matrix specifikacija", + "Design and implementation of E2E in Matrix": "E2E dizainas ir įgyvendinimas ties Matrix", + "Implementing VR services with Matrix": "VR paslaugų įgyvendinimas ties Matrix", + "Implementing VoIP services with Matrix": "VoIP paslaugų įgyvendinimas ties Matrix", + "Discussion of the Identity Service API": "Diskusijos apie tapatybės paslaugos API", + "Support for those using, running and writing other bridges": "Palaikymas skirtas besinaudojantiems, prižiūrintiems ar kuriantiems kitus tinklų tiltus", + "Contributing code to Matrix and Riot": "Matrix ir Riot kodo plėtojimas", + "Dev chat for the Riot/Web dev team": "Kūrėjų pokalbiai, skirti Riot/Web kūrėjų komandai", + "Dev chat for the Dendrite dev team": "Kūrėjų pokalbiai, skirti Dendrite kūrėjų komandai", + "Co-ordination for Riot translators": "Koordinavimas Riot vertėjams" } diff --git a/src/i18n/strings/nb_NO.json b/src/i18n/strings/nb_NO.json index ebb07605e8..44f2bf2f95 100644 --- a/src/i18n/strings/nb_NO.json +++ b/src/i18n/strings/nb_NO.json @@ -1,4 +1,16 @@ { "Custom Server Options": "Tilpassede serveralternativer", - "powered by Matrix": "benytter seg av Matrix" + "powered by Matrix": "benytter seg av Matrix", + "Riot is not supported on mobile web. Install the app?": "Riot er ikke støttet av mobil-nettlesere. Ønsker De å innstalere appen?", + "Riot Desktop on %(platformName)s": "Riot på skrivebordet er på %(platformName)s", + "Unknown device": "Ukjent enhet", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s på %(osName)s", + "You need to be using HTTPS to place a screen-sharing call.": "De er nødt til å benytte HTTPS for å kunne ha en samtale med skjermdeling.", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "De kan benytte brukerdefinerte server-innstillinger for å kunne logge Dem inn på andre Matrix-servere ved å spesifisere en annen hjemmeserver-adresse.
Dette tillater Dem til å bruke Riot med en eksisterende Matrix-konto på en annen hjemmeserver.

De kan i tillegg definere en egen hjemmeserver-identitet, men De kan da ikke invitere andre brukere via email, og De kan heller ikke bli invitert via email selv.", + "Dismiss": "Avvis", + "Welcome to Riot.im": "Velkommen skal De være til Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Desentralisert, kryptert nettprat & sammabeid drevet av [matrix]", + "Search the room directory": "Søk i romutvalget", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Allerede finnes det alskens rom i Matrix, sammenkoblet til eksisterende nettverk (Slack, IRC, Gitter osv.) eller selvstendig. Dersom De formoder, kan De kikke på utvalget!", + "Chat with Riot Bot": "Nettprat med Riot Bot" } diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index c683e2c028..74e2102526 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -34,5 +34,6 @@ "Support for those using, running and writing other bridges": "Ondersteuning voor het gebruiken, draaien en ontwikkelen aan andere bruggen", "Dev chat for the Riot/Web dev team": "Dev-chat voor het Riot/Web ontwikkelteam", "Dev chat for the Dendrite dev team": "Dev-chat voor het Dendrite-ontwikkelteam", - "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Je kan de custom server opties gebruiken om op andere Matrix server in te loggen door een andere Home server URL op te geven.
Dit laat je toe om Riot te gebruiken met een bestaande Matrix account op een andere home server.

Je kan ook een custom identiteits-server opzetten maar dan kan je geen gebruikers uitnodigen via hun email adres, of zelf uitgenodigd worden via je email adres." + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Je kan de custom server opties gebruiken om op andere Matrix server in te loggen door een andere Home server URL op te geven.
Dit laat je toe om Riot te gebruiken met een bestaande Matrix account op een andere home server.

Je kan ook een custom identiteits-server opzetten maar dan kan je geen gebruikers uitnodigen via hun email adres, of zelf uitgenodigd worden via je email adres.", + "Co-ordination for Riot translators": "Coördinatie voor Riot vertalers" } diff --git a/src/i18n/strings/nn.json b/src/i18n/strings/nn.json new file mode 100644 index 0000000000..a94e77e599 --- /dev/null +++ b/src/i18n/strings/nn.json @@ -0,0 +1,39 @@ +{ + "Riot is not supported on mobile web. Install the app?": "Riot er ikkja støtta på mobilnettlesare. Last æppen inn?", + "Riot Desktop on %(platformName)s": "Riot på Skrivebord for %(platformName)s", + "Unknown device": "Ukjend eining", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s gjennom %(browserName)s på %(osName)s", + "You need to be using HTTPS to place a screen-sharing call.": "Du må bruka HTTPS for å ha ei samtale med skjermdeling.", + "Dismiss": "Avvis", + "powered by Matrix": "Matrixdriven", + "Welcome to Riot.im": "Velkomen til Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Desentralisert, kryptert nettprat & samarbeid driven av [matrix]", + "Search the room directory": "Søk i romutvalet", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Det finst allereie massevis av rom på Matrix, anten lenkja til nettverk som allereie finst (Slack, IRC, Gitter osv.) eller uavhengige. Tak ein titt på utvalet!", + "Chat with Riot Bot": "Nettprat med Riot Bot", + "Get started with some tips from Riot Bot!": "Kom i gang med nokre råd frå Riot Bot!", + "General discussion about Matrix and Riot": "Allmenn meiningsutveksling om Matrix og Riot", + "Discussion of all things Matrix!": "Meiningsutveksling om alt som gjeld Matrix!", + "Riot/Web & Desktop chat": "Riot/Web & Skrivebordsprat", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk-prat", + "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk-prat", + "Matrix technical discussions": "Teknisk meiningsutveksling om Matrix", + "Running Matrix services": "Å køyra Matrix-tenestar", + "Community-run support for Synapse": "Samfunnsdriven støtte for Synapse", + "Admin support for Dendrite": "Administratorstøtte for Dendrite", + "Announcements about Synapse releases": "Kunngjeringar om Synapse-utgåver", + "Support for those using and running matrix-appservice-irc": "Støtte for dei som brukar og køyrar matrix-appleservice-irc", + "Building services on Matrix": "Byggingstenester på Matrix", + "Support for those using the Matrix spec": "Støtte for dei som brukar Matrix-specen", + "Design and implementation of E2E in Matrix": "E2E-oppbygging og -implementering på Matrix", + "Implementing VR services with Matrix": "Implementering av VR-tenester med Matrix", + "Implementing VoIP services with Matrix": "Implementering av VoIP-tenester med Matrix", + "Discussion of the Identity Service API": "Meiningsutveksling om Identitetstenar-APIen", + "Support for those using, running and writing other bridges": "Støtte for dei som brukar, køyrer og skriv andre bruer", + "Contributing code to Matrix and Riot": "For å bidraga med kode til Matrix og Riot", + "Dev chat for the Riot/Web dev team": "Utviklar-prat for Riot/Web-utviklargruppa", + "Dev chat for the Dendrite dev team": "Utviklar-prat for Dendrite-utviklargruppa", + "Co-ordination for Riot translators": "Samordning for Riot-omsetjare", + "Custom Server Options": "Eigentenar-innstillingar", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Du kan bruka eigentenarinnstillingar til å logga inn på andre Matrixtenarar ved å oppgje ein annan Heimtenar-URL.
Dette gjer at du kan bruka Riot med ein Matrixbrukar som allereie finst på ein annan heimtenar.

Du kan òg setja ein eigen identitetstenar men du kjem i so fall ikkje til å kunna byda brukare inn med epost, eller å sjølv verta boden inn med epost." +} diff --git a/src/i18n/strings/pl.json b/src/i18n/strings/pl.json index 33e488d5ce..b182eeb894 100644 --- a/src/i18n/strings/pl.json +++ b/src/i18n/strings/pl.json @@ -8,12 +8,12 @@ "Unknown device": "Nieznane urządzenie", "You need to be using HTTPS to place a screen-sharing call.": "Musisz używać bezpiecznego protokołu HTTPS aby użyć połączenia współdzielenia ekranu.", "Welcome to Riot.im": "Witamy w Riot.im", - "Decentralised, encrypted chat & collaboration powered by [matrix]": "Zdecentralizowany, szyfrowany czat & współpraca wspierana przez [matrix]", - "Search the room directory": "Wyszukaj katalog pokojów", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Zdecentralizowany, szyfrowany czat & współpraca oparta na [matrix]", + "Search the room directory": "Przeszukaj katalog pokojów", "Chat with Riot Bot": "Rozmowa z Botem Riota", "Get started with some tips from Riot Bot!": "Rozpocznij z wskazówkami Riot Bota!", - "General discussion about Matrix and Riot": "Generalna rozmowa o Matrix i Riot", - "Discussion of all things Matrix!": "Rozmowa o wszystkim Matrixowym!", + "General discussion about Matrix and Riot": "Ogólna rozmowa o Matrix i Riot", + "Discussion of all things Matrix!": "Rozmowa o wszystkich sprawach Matrixowych!", "Matrix technical discussions": "Dyskusje techniczne Matrixa", "Riot/Web & Desktop chat": "Czat o Riot/Web i Desktop", "Riot/iOS & matrix-ios-sdk chat": "Czat o Riot/iOS i matrix-ios-sdk", @@ -29,10 +29,11 @@ "Implementing VR services with Matrix": "Implementowanie usług wirtualnej rzeczywistości w oparciu o Matrix", "Implementing VoIP services with Matrix": "Implementowanie usług telefonii internetowej VoIP w oparciu o Matrix", "Discussion of the Identity Service API": "Dyskusja na temat API Identity Service", - "Support for those using, running and writing other bridges": "Wsparcie dla używających, zapewniających i piszących inne mosty", - "Contributing code to Matrix and Riot": "Wspieranie rozwoju Matrix i Riot", + "Support for those using, running and writing other bridges": "Wsparcie dla używających, utrzymujących i piszących inne mosty", + "Contributing code to Matrix and Riot": "Współtworzenie kodu do Matrix lub Riot", "Dev chat for the Riot/Web dev team": "Czat deweloperów zespołu Riot/Web", "Dev chat for the Dendrite dev team": "Czat deweloperów zespołu Dendrite", "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Matrix ma wiele, już działających pokoi, połączonych z istniejącymi sieciami, takimi jak Slack, IRC lub Gitter, a także wiele zupełnie niezależnych. Możesz przejrzeć je wszystkie w spisie pokoi!", - "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Możesz skorzystać z opcji dedykowanego serwera, aby zalogować się na inne serwery Matrix, podając inny adres URL serwera Domowego.
Pozwala to na używanie Riot z istniejącym kontem Matrix na innym serwerze domowym.

Możesz również ustawić dedykowany serwer tożsamości, ale nie będziesz w stanie zapraszać użytkowników przez adres email, lub otrzymywać zaproszeń na adres email." + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Możesz skorzystać z opcji niestandardowego serwera, aby zalogować się na inne serwery Matrix, podając inny adres URL serwera domowego.
Pozwala to na używanie Riot z istniejącym kontem Matrix na innym serwerze domowym.

Możesz również ustawić niestandardowy serwer tożsamości, ale nie będziesz w stanie zapraszać użytkowników przez adres e-mail ani otrzymywać zaproszeń na adres e-mail.", + "Co-ordination for Riot translators": "Koordynacja tłumaczy Riot" } diff --git a/src/i18n/strings/ro.json b/src/i18n/strings/ro.json new file mode 100644 index 0000000000..5a23ed8309 --- /dev/null +++ b/src/i18n/strings/ro.json @@ -0,0 +1,5 @@ +{ + "Riot is not supported on mobile web. Install the app?": "Riot nu functionează pe mobil. Instalezi aplicaţia?", + "Riot Desktop on %(platformName)s": "Riot Desktop pe %(platformName)s", + "Unknown device": "Device necunoscut" +} diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index eb59cd6f48..44fa9818d0 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -1,12 +1,12 @@ { - "Custom Server Options": "Egna serverinställningar", + "Custom Server Options": "Anpassade serverinställningar", "Dismiss": "Avvisa", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s på %(osName)s", "powered by Matrix": "drivs av Matrix", "Riot Desktop on %(platformName)s": "Riot Desktop på %(platformName)s", "Riot is not supported on mobile web. Install the app?": "Riot stöds inte på mobil-webb. Installera appen?", "Unknown device": "Okänd enhet", - "You need to be using HTTPS to place a screen-sharing call.": "Du måste använda HTTPS för att dela din skärm.", + "You need to be using HTTPS to place a screen-sharing call.": "Du måste använda HTTPS för att ringa med skärmdelning.", "Welcome to Riot.im": "Välkommen till Riot.im", "Chat with Riot Bot": "Chatta med Riot Bot", "Get started with some tips from Riot Bot!": "Kom igång med några tips från Riot Bot!", @@ -27,7 +27,7 @@ "Dev chat for the Riot/Web dev team": "Chatt för utvecklare av Riot/Web", "Dev chat for the Dendrite dev team": "Chatt för utvecklare av Dendrite", "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Många rum finns redan i Matrix, länkade till andra nätverk (Slack, IRC, Gitter etc.) eller fristående. Kolla in katalogen!", - "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentraliserad, krypterad chatt & samarbete möjliggjort med [matrix]", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentraliserad, krypterad chatt & samarbetsplattform möjliggjort med [matrix]", "Search the room directory": "Sök i rumskatalogen", "Riot/Web & Desktop chat": "Riot/Web & Desktop-chatt", "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk-chatt", diff --git a/src/i18n/strings/tr.json b/src/i18n/strings/tr.json index 296ddcb7a8..f3b0b87510 100644 --- a/src/i18n/strings/tr.json +++ b/src/i18n/strings/tr.json @@ -1,17 +1,17 @@ { "%(appName)s via %(browserName)s on %(osName)s": "%(osName)s işletim sisteminde %(browserName)s ile %(appName)s", - "Custom Server Options": "Özel Sunucu Seçenekleri", - "Dismiss": "Uzaklaştır", + "Custom Server Options": "Özelleştirilebilir Sunucu Seçenekleri", + "Dismiss": "Kapat", "powered by Matrix": "Matrix tarafından desteklenmektedir", "Riot Desktop on %(platformName)s": "%(platformName)s platformunda Riot Masaüstü", "Riot is not supported on mobile web. Install the app?": "Riot mobil web'de desteklenmiyor . Uygulamayı yükle ?", "Unknown device": "Bilinmeyen aygıt", "You need to be using HTTPS to place a screen-sharing call.": "Ekran paylaşımlı arama yapmak için HTTPS kullanıyor olmalısınız.", - "Welcome to Riot.im": "Riot.im'e Hoş Geldiniz", - "Decentralised, encrypted chat & collaboration powered by [matrix]": "Dağıtık , şifreli sohbet & işbirliği ile Matrix tarafından desteklenmektedir", + "Welcome to Riot.im": "Riot.im'e hoş geldiniz", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Merkezsiz, şifreli sohbet & işbirliği ile Matrix tarafından desteklenmektedir", "Search the room directory": "Oda dizinini ara", - "Chat with Riot Bot": "Riot Bot ile Sohbet Et", - "Get started with some tips from Riot Bot!": "Bazı Riot Bot ipuçları ile başlayın !", + "Chat with Riot Bot": "Riot Bot ile sohbet et", + "Get started with some tips from Riot Bot!": "Riot Bot'tan bazı ipuçları ile başlayın!", "General discussion about Matrix and Riot": "Matrix ve Riot hakkında genel tartışma", "Discussion of all things Matrix!": "Matrix'in tüm tartışması!", "Riot/Web & Desktop chat": "Riot/Web & Masaüstü sohbet", @@ -19,19 +19,21 @@ "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk sohbet", "Matrix technical discussions": "Matrix teknik tartışmalar", "Running Matrix services": "Çalışan Matrix hizmetleri", - "Community-run support for Synapse": "Synapse için topluluk tarafından işlenen destek", - "Admin support for Dendrite": "Dendrite için Admin desteği", + "Community-run support for Synapse": "Synapse için topluluk tarafından işletilen destek", + "Admin support for Dendrite": "Dendrite için yönetici desteği", "Announcements about Synapse releases": "Synapse sürümleri hakkında duyurular", "Support for those using and running matrix-appservice-irc": "matrix-appservice-irc kullanan ve çalıştıran kullanıcılar için destek", - "Building services on Matrix": "Matrix üzerinde Yapı hizmetleri", + "Building services on Matrix": "Matrix üzerinde yapı hizmetleri", "Support for those using the Matrix spec": "Matrix teknik özelliklerini kullananlar için destek", - "Design and implementation of E2E in Matrix": "Matrix'te E2E ' nin Tasarım ve İmplementasyonu", - "Implementing VR services with Matrix": "Matrix'te VR hizmetlerini implement etmek", - "Implementing VoIP services with Matrix": "Matrix'te VoIP hizmetlerini implement etmek", - "Discussion of the Identity Service API": "Kimlik Hizmet API ( Identity Service API ) Tartışması", + "Design and implementation of E2E in Matrix": "Matrix'te E2E ' nin Tasarımı ve uyglamanması", + "Implementing VR services with Matrix": "Matrix'te VR hizmetlerini uygulamak", + "Implementing VoIP services with Matrix": "Matrix'te VoIP hizmetlerini uygulamak", + "Discussion of the Identity Service API": "Kimlik Hizmet API ( Identity Service API ) tartışması", "Support for those using, running and writing other bridges": "Diğer köprüleri kullanan , çalıştıran ve yazanlar için destek", - "Contributing code to Matrix and Riot": "Matrix ve Riot'a kod katkısı (contribution) sağla", - "Dev chat for the Riot/Web dev team": "Riot/Web Geliştirici takımı için Geliştirici sohbeti", - "Dev chat for the Dendrite dev team": "Dendrite Geliştirici Takımı için Geliştirici sohbeti", - "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Matrix'te varolan ağlara (Slack , IRC , Gitter vb.) bağlı ya da bağımsız bir çok oda var . Dizini kontrol edin!" + "Contributing code to Matrix and Riot": "Matrix ve Riot'a kod katkısı sağlama", + "Dev chat for the Riot/Web dev team": "Riot/Web Geliştirici takımı için geliştirici sohbeti", + "Dev chat for the Dendrite dev team": "Dendrite geliştirici takımı için geliştirici sohbeti", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Matrix'te var olan ağalara bağlı (Slack , IRC , Gitter vb.) birçok oda var. Dizini kontrol edin!", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Farklı bir ev sunucusu URL'sini belirterek diğer Matrix sunucularına oturum açmak için özel sunucu seçeneklerini kullanabilirsiniz.
Bu, Riot'u başka bir ev sunucusu üzerinde var olan Matrix hesabını kullanmanıza olanak sağlar.

Ayrıca özelleştirilebilir bir kimlik de ayarlayabilirsiniz, ama kullanıcılırı ve kendinizi e-posta adreslerinden davet edemeyeceksiniz.", + "Co-ordination for Riot translators": "Riot çeviricileri için iş güdüm (koordinasyon)" } diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index 93184603d6..8670b7b2af 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -1,14 +1,14 @@ { - "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s 透過 %(browserName)s 在 %(osName)s", + "%(appName)s via %(browserName)s on %(osName)s": "在 %(osName)s 的 %(browserName)s 上的 %(appName)s", "Custom Server Options": "自訂伺服器選項", - "Dismiss": "無視", - "powered by Matrix": "由 Matrix 架設", + "Dismiss": "關閉", + "powered by Matrix": "由 Matrix 提供", "Unknown device": "未知裝置", - "You need to be using HTTPS to place a screen-sharing call.": "你需要使用 HTTPS 來放置螢幕分享的通話。", - "Riot Desktop on %(platformName)s": "Riot 桌面版在 %(platformName)s", + "You need to be using HTTPS to place a screen-sharing call.": "你需要使用 HTTPS 來撥打螢幕分享的通話。", + "Riot Desktop on %(platformName)s": "%(platformName)s 的 Riot 桌面版", "Riot is not supported on mobile web. Install the app?": "Riot 不支援行動版網頁,要安裝應用程式嗎?", "Welcome to Riot.im": "歡迎來到 Riot.im", - "Decentralised, encrypted chat & collaboration powered by [matrix]": "去中心化、保密的聊天與協作,由 [matrix] 出品", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "去中心化、保密的聊天與協作,由 [matrix] 提供", "Search the room directory": "搜尋聊天室目錄", "Chat with Riot Bot": "與 Riot 機器人聊天", "Get started with some tips from Riot Bot!": "從 Riot 機器人了解使用 Riot 的訣竅吧!", diff --git a/src/vector/getconfig.js b/src/vector/getconfig.js new file mode 100644 index 0000000000..f3e7bea168 --- /dev/null +++ b/src/vector/getconfig.js @@ -0,0 +1,67 @@ +/* +Copyright 2018 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 Promise from 'bluebird'; +import request from 'browser-request'; + +export async function getVectorConfig(relativeLocation) { + if (relativeLocation === undefined) relativeLocation = ''; + if (relativeLocation !== '' && !relativeLocation.endsWith('/')) relativeLocation += '/'; + try { + const configJson = await getConfig(`${relativeLocation}config.${document.domain}.json`); + // 404s succeed with an empty json config, so check that there are keys + if (Object.keys(configJson).length === 0) { + throw new Error(); // throw to enter the catch + } + return configJson; + } catch (e) { + return await getConfig(relativeLocation + "config.json"); + } +} + +function getConfig(configJsonFilename) { + let deferred = Promise.defer(); + + request( + { method: "GET", url: configJsonFilename }, + (err, response, body) => { + if (err || response.status < 200 || response.status >= 300) { + // Lack of a config isn't an error, we should + // just use the defaults. + // Also treat a blank config as no config, assuming + // the status code is 0, because we don't get 404s + // from file: URIs so this is the only way we can + // not fail if the file doesn't exist when loading + // from a file:// URI. + if (response) { + if (response.status == 404 || (response.status == 0 && body == '')) { + deferred.resolve({}); + } + } + deferred.reject({err: err, response: response}); + return; + } + + // We parse the JSON ourselves rather than use the JSON + // parameter, since this throws a parse error on empty + // which breaks if there's no config.json and we're + // loading from the filesystem (see above). + deferred.resolve(JSON.parse(body)); + } + ); + + return deferred.promise; +} diff --git a/src/vector/index.js b/src/vector/index.js index 14e181d911..ff6b12856c 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -1,6 +1,7 @@ /* Copyright 2015, 2016 OpenMarket Ltd Copyright 2017 Vector Creations Ltd +Copyright 2018 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. @@ -15,8 +16,6 @@ See the License for the specific language governing permissions and limitations under the License. */ -'use strict'; - // Require common CSS here; this will make webpack process it into bundle.css. // Our own CSS (which is themed) is imported via separate webpack entry points // in webpack.config.js @@ -25,36 +24,22 @@ require('gfm.css/gfm.css'); require('highlight.js/styles/github.css'); require('draft-js/dist/Draft.css'); -const rageshake = require("matrix-react-sdk/lib/rageshake/rageshake"); -rageshake.init().then(() => { - console.log("Initialised rageshake: See https://bugs.chromium.org/p/chromium/issues/detail?id=583193 to fix line numbers on Chrome."); - rageshake.cleanup(); -}, (err) => { - console.error("Failed to initialise rageshake: " + err); -}); - -window.addEventListener('beforeunload', (e) => { - console.log('riot-web closing'); - // try to flush the logs to indexeddb - rageshake.flush(); -}); - - - // add React and ReactPerf to the global namespace, to make them easier to - // access via the console -global.React = require("react"); +import React from 'react'; +// add React and ReactPerf to the global namespace, to make them easier to +// access via the console +global.React = React; if (process.env.NODE_ENV !== 'production') { - global.Perf = require("react-addons-perf"); + global.Perf = require('react-addons-perf'); } -var RunModernizrTests = require("./modernizr"); // this side-effects a global -var ReactDOM = require("react-dom"); -var sdk = require("matrix-react-sdk"); -const PlatformPeg = require("matrix-react-sdk/lib/PlatformPeg"); +import RunModernizrTests from './modernizr'; // this side-effects a global +import ReactDOM from 'react-dom'; +import sdk from 'matrix-react-sdk'; +import PlatformPeg from 'matrix-react-sdk/lib/PlatformPeg'; sdk.loadSkin(require('../component-index')); -var VectorConferenceHandler = require('matrix-react-sdk/lib/VectorConferenceHandler'); +import VectorConferenceHandler from 'matrix-react-sdk/lib/VectorConferenceHandler'; import Promise from 'bluebird'; -var request = require('browser-request'); +import request from 'browser-request'; import * as languageHandler from 'matrix-react-sdk/lib/languageHandler'; // Also import _t directly so we can call it just `_t` as this is what gen-i18n.js expects import { _t } from 'matrix-react-sdk/lib/languageHandler'; @@ -69,12 +54,29 @@ import SettingsStore, {SettingLevel} from "matrix-react-sdk/lib/settings/Setting import Tinter from 'matrix-react-sdk/lib/Tinter'; import SdkConfig from "matrix-react-sdk/lib/SdkConfig"; -var lastLocationHashSet = null; +import rageshake from "matrix-react-sdk/lib/rageshake/rageshake"; -var CallHandler = require("matrix-react-sdk/lib/CallHandler"); -CallHandler.setConferenceHandler(VectorConferenceHandler); +import CallHandler from 'matrix-react-sdk/lib/CallHandler'; -MatrixClientPeg.setIndexedDbWorkerScript(window.vector_indexeddb_worker_script); +import {getVectorConfig} from './getconfig'; + +let lastLocationHashSet = null; + +function initRageshake() { + rageshake.init().then(() => { + console.log("Initialised rageshake: See https://bugs.chromium.org/p/chromium/issues/detail?id=583193 to fix line numbers on Chrome."); + + window.addEventListener('beforeunload', (e) => { + console.log('riot-web closing'); + // try to flush the logs to indexeddb + rageshake.flush(); + }); + + rageshake.cleanup(); + }, (err) => { + console.error("Failed to initialise rageshake: " + err); + }); +} function checkBrowserFeatures(featureList) { if (!window.Modernizr) { @@ -100,11 +102,6 @@ function checkBrowserFeatures(featureList) { return featureComplete; } -var validBrowser = checkBrowserFeatures([ - "displaytable", "flexbox", "es5object", "es5function", "localstorage", - "objectfit", "indexeddb", "webworkers", -]); - // Parse the given window.location and return parameters that can be used when calling // MatrixChat.showScreen(screen, params) function getScreenFromLocation(location) { @@ -135,7 +132,7 @@ function onHashChange(ev) { // This will be called whenever the SDK changes screens, // so a web page can update the URL bar appropriately. -var onNewScreen = function(screen) { +function onNewScreen(screen) { console.log("newscreen "+screen); var hash = '#/' + screen; lastLocationHashSet = hash; @@ -151,7 +148,7 @@ var onNewScreen = function(screen) { // If we're in electron, we should never pass through a file:// URL otherwise // the identity server will try to 302 the browser to it, which breaks horribly. // so in that instance, hardcode to use riot.im/app for now instead. -var makeRegistrationUrl = function(params) { +function makeRegistrationUrl(params) { let url; if (window.location.protocol === "file:") { url = 'https://riot.im/app/#/register'; @@ -177,8 +174,6 @@ var makeRegistrationUrl = function(params) { return url; } -window.addEventListener('hashchange', onHashChange); - function getConfig(configJsonFilename) { let deferred = Promise.defer(); @@ -226,6 +221,12 @@ function onTokenLoginCompleted() { } async function loadApp() { + initRageshake(); + MatrixClientPeg.setIndexedDbWorkerScript(window.vector_indexeddb_worker_script); + CallHandler.setConferenceHandler(VectorConferenceHandler); + + window.addEventListener('hashchange', onHashChange); + await loadLanguage(); const fragparts = parseQsFromFragment(window.location); @@ -239,15 +240,7 @@ async function loadApp() { let configJson; let configError; try { - try { - configJson = await getConfig(`config.${document.domain}.json`); - // 404s succeed with an empty json config, so check that there are keys - if (Object.keys(configJson).length === 0) { - throw new Error(); // throw to enter the catch - } - } catch (e) { - configJson = await getConfig("config.json"); - } + configJson = await getVectorConfig(); } catch (e) { configError = e; } @@ -261,31 +254,13 @@ async function loadApp() { const preventRedirect = Boolean(fragparts.params.client_secret); if (!preventRedirect) { - if (/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream) { - // FIXME: ugly status hardcoding - if (SettingsStore.getValue("theme") === 'status') { - window.location = "https://status.im/join-riot.html"; + const isIos = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream; + const isAndroid = /Android/.test(navigator.userAgent); + if (isIos || isAndroid) { + if (!document.cookie.split(';').some((c) => c.startsWith('mobile_redirect_to_guide'))) { + window.location = "mobile_guide/"; return; } - else { - if (confirm(_t("Riot is not supported on mobile web. Install the app?"))) { - window.location = "https://itunes.apple.com/us/app/vector.im/id1083446067"; - return; - } - } - } - else if (/Android/.test(navigator.userAgent)) { - // FIXME: ugly status hardcoding - if (SettingsStore.getValue("theme") === 'status') { - window.location = "https://status.im/join-riot.html"; - return; - } - else { - if (confirm(_t("Riot is not supported on mobile web. Install the app?"))) { - window.location = "https://play.google.com/store/apps/details?id=im.vector.alpha"; - return; - } - } } } @@ -325,17 +300,19 @@ async function loadApp() { } } - if (window.localStorage && window.localStorage.getItem('mx_accepts_unsupported_browser')) { - console.log('User has previously accepted risks in using an unsupported browser'); - validBrowser = true; - } + const validBrowser = checkBrowserFeatures([ + "displaytable", "flexbox", "es5object", "es5function", "localstorage", + "objectfit", "indexeddb", "webworkers", + ]); + + const acceptInvalidBrowser = window.localStorage && window.localStorage.getItem('mx_accepts_unsupported_browser'); console.log("Vector starting at "+window.location); if (configError) { window.matrixChat = ReactDOM.render(
Unable to load config file: please refresh the page to try again.
, document.getElementById('matrixchat')); - } else if (validBrowser) { + } else if (validBrowser || acceptInvalidBrowser) { const platform = PlatformPeg.get(); platform.startUpdater(); @@ -362,7 +339,6 @@ async function loadApp() { window.matrixChat = ReactDOM.render( , diff --git a/src/vector/mobile_guide/index.html b/src/vector/mobile_guide/index.html new file mode 100644 index 0000000000..433d5b7e5a --- /dev/null +++ b/src/vector/mobile_guide/index.html @@ -0,0 +1,386 @@ + + + + + + + + + + +
+ + + +
+
+
+

Step 2: Register or Log in

+

Create a new account if you don't have one, or log in to your existing account.

+
+
+
+
+ +
+
+ + diff --git a/src/vector/mobile_guide/index.js b/src/vector/mobile_guide/index.js new file mode 100644 index 0000000000..b2d007ac53 --- /dev/null +++ b/src/vector/mobile_guide/index.js @@ -0,0 +1,23 @@ +import {getVectorConfig} from '../getconfig'; + +function onBackToRiotClick() { + document.cookie = 'mobile_redirect_to_guide=false;path=/'; + window.location.href = '../'; +} + +async function initPage() { + document.getElementById('back_to_riot_button').onclick = onBackToRiotClick; + + const config = await getVectorConfig('..'); + let hsUrl; + if (config && config['default_hs_url']) { + hsUrl = config['default_hs_url']; + } + if (hsUrl && hsUrl !== 'https://matrix.org/') { + document.getElementById('step2_container').style.display = 'block'; + document.getElementById('hs_url').innerHTML = hsUrl; + document.getElementById('step_login_header').innerHTML= 'Step 3: Register or Log in'; + } +} + +initPage(); diff --git a/webpack.config.js b/webpack.config.js index 8a6d087d98..2dd0eb054d 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -13,6 +13,8 @@ module.exports = { "bundle": ["babel-polyfill", "./src/vector/index.js"], "indexeddb-worker": "./src/vector/indexeddb-worker.js", + "mobileguide": "./src/vector/mobile_guide/index.js", + // We ship olm.js as a separate lump of javascript. This makes it get // loaded via a separate