* Upgrade to JS SDK 5.1.1 and React SDK 2.2.3
 -----BEGIN PGP SIGNATURE-----
 
 iQHFBAABCAAvFiEEXqfg9wRho7y+vk1e9hUYBgMgJvkFAl5w39MRHHJlbGVhc2Vz
 QHJpb3QuaW0ACgkQ9hUYBgMgJvlVwQv/QXhOEaioBDRvIgBAd4Q0r1TNNjck4bNu
 kSnxusvuK8WBELPurF8IKk2Nx1rzO7AuY4nnjCJH/9Hzi+xKYAIv79j3kleJxlDB
 DZ2jTV3wLleAJQbmBtvphSaf5bYGH/A6KNcFBXzKID+fbHoY2reayw1FIe3pCeMe
 HDMjyBbkQj0jkHwiO+aMyHd/CBcOXw5MugOk/hi6ftzyQYWCxA+EhCERAC3P7XtT
 3/l5DlBepXqFgvnXnKRSyW91+Q6YXrHSmLLv/ZD7Iu5XMB2QvOiX8/yBEHCO8y0L
 SxVm/8fBnbyfafGb3+pL5LJk8cY0lde4X4Nwwi+ZgLO4v24B6d9KdOomg8a857Zp
 JgZtBmgapDpdoLmQXmnipWBB6QGoF+AqeO47E8weRB3mNko3BuLlfTNjFM4lkthJ
 h/xnVuCK7ruYdIoEHqTuOqkDEYOm2fJq0ShD+B77xfdf1B1GaM/0njLXrPCxgdHh
 avDv8YswPT17JMG+6SrAFI2Hb87DJQKg
 =x4LI
 -----END PGP SIGNATURE-----

Merge tag 'v1.5.13' into matthew/p2p

[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.5.13-rc.1...v1.5.13)
* Upgrade to JS SDK 5.1.1 and React SDK 2.2.3
This commit is contained in:
Kegan Dougal 2020-03-26 11:50:30 +00:00
commit 52641c5674
53 changed files with 2121 additions and 1800 deletions

View File

@ -1,80 +0,0 @@
steps:
- label: ":eslint: JS Lint"
command:
- "yarn install"
- "yarn lint:js"
plugins:
- docker#v3.0.1:
image: "node:12"
# This layer doesn't have a TypeScript linter. This comment is to remind TravisR to fix that.
# - label: ":eslint: TS Lint"
# command:
# - "echo '--- Install js-sdk'"
# - "./scripts/ci/install-deps.sh"
# - "yarn lint:ts"
# plugins:
# - docker#v3.0.1:
# image: "node:12"
- label: ":eslint: Types Lint"
command:
- "yarn install"
- "yarn lint:types"
plugins:
- docker#v3.0.1:
image: "node:12"
- label: "🛠 Build"
command:
- "echo '--- Fetching Dependencies'"
- "./scripts/fetch-develop.deps.sh --depth 1"
- "yarn install"
- "echo '+++ Building Project'"
- "yarn build"
plugins:
- docker#v3.0.1:
image: "node:12"
- label: ":jest: Tests"
agents:
# We use a medium sized instance instead of the normal small ones because
# webpack loves to gorge itself on resources.
queue: "medium"
command:
- "echo '--- Fetching Dependencies'"
- "./scripts/fetch-develop.deps.sh --depth 1"
- "yarn install"
- "yarn build:genfiles" # We have to build the app to make sure the autogenned files are present
- "echo '+++ Running Tests'"
- "yarn test"
plugins:
- docker#v3.0.1:
image: "node:10"
- label: "🌐 i18n"
command:
- "echo '--- Fetching Dependencies'"
- "./scripts/fetch-develop.deps.sh --depth 1"
- "yarn install"
- "echo '+++ Testing i18n output'"
- "yarn diff-i18n"
plugins:
- docker#v3.0.1:
image: "node:10"
- wait: ~ # this wait is to perform deploy to /develop only if all other steps passed
continue_on_failure: false
- label: ":hammer: Package"
command:
- "echo '--- Fetching Dependencies'"
- "./scripts/fetch-develop.deps.sh --depth 1"
- "yarn install"
- "echo '+++ Packaging'"
- "./scripts/ci_package.sh"
branches: "develop"
artifact_paths: "dist/riot-*.tar.gz"
plugins:
- docker#v3.0.1:
image: "node:10"

View File

@ -5,12 +5,30 @@
"setClasses" "setClasses"
], ],
"feature-detects": [ "feature-detects": [
"test/css/animations",
"test/css/displaytable", "test/css/displaytable",
"test/css/filters",
"test/css/flexbox", "test/css/flexbox",
"test/es5/specification",
"test/css/objectfit", "test/css/objectfit",
"test/storage/localstorage",
"test/workers/webworkers", "test/es5/date",
"test/indexeddb" "test/es5/function",
"test/es5/object",
"test/es5/undefined",
"test/es6/array",
"test/es6/collections",
"test/es6/promises",
"test/es6/string",
"test/svg",
"test/svg/asimg",
"test/svg/filters",
"test/cors",
"test/iframe/sandbox",
"test/json",
"test/network/fetch",
"test/storage/localstorage"
] ]
} }

View File

@ -1,3 +1,229 @@
Changes in [1.5.13](https://github.com/vector-im/riot-web/releases/tag/v1.5.13) (2020-03-17)
============================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.5.13-rc.1...v1.5.13)
* Upgrade to JS SDK 5.1.1 and React SDK 2.2.3
Changes in [1.5.13-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.5.13-rc.1) (2020-03-11)
======================================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.5.12...v1.5.13-rc.1)
* Update from Weblate
[\#12688](https://github.com/vector-im/riot-web/pull/12688)
* Fix Docker image version for develop builds
[\#12670](https://github.com/vector-im/riot-web/pull/12670)
* docker: optimize custom sdk builds
[\#12612](https://github.com/vector-im/riot-web/pull/12612)
* riot-desktop open SSO in browser so user doesn't have to auth twice
[\#12590](https://github.com/vector-im/riot-web/pull/12590)
* Fix SSO flows for electron 8.0.2 by re-breaking will-navigate
[\#12585](https://github.com/vector-im/riot-web/pull/12585)
* index.html: Place noscript on top of the page
[\#12563](https://github.com/vector-im/riot-web/pull/12563)
* Remove will-navigate comment after Electron fix
[\#12561](https://github.com/vector-im/riot-web/pull/12561)
* Update loading test for JS SDK IDB change
[\#12552](https://github.com/vector-im/riot-web/pull/12552)
* Upgrade deps
[\#12528](https://github.com/vector-im/riot-web/pull/12528)
Changes in [1.5.12](https://github.com/vector-im/riot-web/releases/tag/v1.5.12) (2020-03-04)
============================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.5.11...v1.5.12)
* Upgrade to React SDK 2.2.1
* Revert to Electron 7.1.12 to fix Arch Linux tray icon
* Fix image download links so they open in a new tab
Changes in [1.5.11](https://github.com/vector-im/riot-web/releases/tag/v1.5.11) (2020-03-02)
============================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.5.11-rc.1...v1.5.11)
* Upgrade to JS SDK 5.1.0 and React SDK 2.2.0
* Fix SSO flows for Electron 8.0.2 by disabling will-navigate
[\#12585](https://github.com/vector-im/riot-web/pull/12585)
Changes in [1.5.11-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.5.11-rc.1) (2020-02-26)
======================================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.5.10...v1.5.11-rc.1)
* Upgrade to JS SDK 5.1.0-rc.1 and React SDK 2.2.0-rc.1
* Change Windows signing to warning when missing token
[\#12523](https://github.com/vector-im/riot-web/pull/12523)
* Modernizr remove t3st/es6/contains
[\#12524](https://github.com/vector-im/riot-web/pull/12524)
* Switch out any eval-using Modernizr rules
[\#12519](https://github.com/vector-im/riot-web/pull/12519)
* Update from Weblate
[\#12522](https://github.com/vector-im/riot-web/pull/12522)
* Notify electron of language changes
[\#12487](https://github.com/vector-im/riot-web/pull/12487)
* Relax macOS notarisation check to print a warning
[\#12503](https://github.com/vector-im/riot-web/pull/12503)
* Clarify supported tier means desktop OSes
[\#12486](https://github.com/vector-im/riot-web/pull/12486)
* Use noreferrer in addition to noopener for edge case browsers
[\#12477](https://github.com/vector-im/riot-web/pull/12477)
* Document start / end composer shortcuts
[\#12466](https://github.com/vector-im/riot-web/pull/12466)
* Update from Weblate
[\#12480](https://github.com/vector-im/riot-web/pull/12480)
* Remove buildkite pipeline
[\#12464](https://github.com/vector-im/riot-web/pull/12464)
* Remove exec so release script continues
[\#12435](https://github.com/vector-im/riot-web/pull/12435)
* Use Persistent Storage where possible
[\#12425](https://github.com/vector-im/riot-web/pull/12425)
Changes in [1.5.10](https://github.com/vector-im/riot-web/releases/tag/v1.5.10) (2020-02-19)
============================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.5.9...v1.5.10)
* Get rid of dependence on usercontent.riot.im
[\#12292](https://github.com/vector-im/riot-web/pull/12292)
* Add experimental support tier
[\#12377](https://github.com/vector-im/riot-web/pull/12377)
Changes in [1.5.9](https://github.com/vector-im/riot-web/releases/tag/v1.5.9) (2020-02-17)
==========================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.5.9-rc.1...v1.5.9)
* Automate SDK dep upgrades for release
[\#12374](https://github.com/vector-im/riot-web/pull/12374)
Changes in [1.5.9-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.5.9-rc.1) (2020-02-13)
====================================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.5.8...v1.5.9-rc.1)
* Upgrade JS SDK to 5.0.0-rc.1 and React SDK 2.1.0-rc.2
* Update from Weblate
[\#12354](https://github.com/vector-im/riot-web/pull/12354)
* Add top left menu shortcut
[\#12310](https://github.com/vector-im/riot-web/pull/12310)
* Remove modernizr rules for features on which we only soft depend
[\#12272](https://github.com/vector-im/riot-web/pull/12272)
* Embed CSP meta tag and stop using script-src unsafe-inline
[\#12258](https://github.com/vector-im/riot-web/pull/12258)
* Add contribute.json
[\#12251](https://github.com/vector-im/riot-web/pull/12251)
* Improve Browser checks
[\#12232](https://github.com/vector-im/riot-web/pull/12232)
* Document padlock flag
[\#12173](https://github.com/vector-im/riot-web/pull/12173)
* Enable cross-signing on /develop
[\#12126](https://github.com/vector-im/riot-web/pull/12126)
* Switch back to legacy decorators
[\#12110](https://github.com/vector-im/riot-web/pull/12110)
* Update babel targets
[\#12102](https://github.com/vector-im/riot-web/pull/12102)
* Install deps for linting
[\#12076](https://github.com/vector-im/riot-web/pull/12076)
* Update from Weblate
[\#12062](https://github.com/vector-im/riot-web/pull/12062)
* Change to minimal Webpack output
[\#12049](https://github.com/vector-im/riot-web/pull/12049)
* Remove docs for new invite dialog labs feature
[\#12015](https://github.com/vector-im/riot-web/pull/12015)
* ElectronPlatform: Add the indexSize method.
[\#11529](https://github.com/vector-im/riot-web/pull/11529)
* ElectronPlatform: Add the ability to load file events from the event index
[\#11907](https://github.com/vector-im/riot-web/pull/11907)
* Fix the remainder of the cookie links
[\#12008](https://github.com/vector-im/riot-web/pull/12008)
* Use bash in Docker scripts
[\#12001](https://github.com/vector-im/riot-web/pull/12001)
* Use debian to build the Docker image
[\#11999](https://github.com/vector-im/riot-web/pull/11999)
* Update cookie policy urls on /app and /develop config.json
[\#11998](https://github.com/vector-im/riot-web/pull/11998)
* BuildKite: Only deploy to /develop if everything else passed
[\#11996](https://github.com/vector-im/riot-web/pull/11996)
* Add docs for admin report content message
[\#11995](https://github.com/vector-im/riot-web/pull/11995)
* Load as little as possible in index.js for the skinner
[\#11959](https://github.com/vector-im/riot-web/pull/11959)
* Fix webpack config (by stealing Dave's config)
[\#11956](https://github.com/vector-im/riot-web/pull/11956)
* Force Jest to resolve the js-sdk and react-sdk to src directories
[\#11954](https://github.com/vector-im/riot-web/pull/11954)
* Fix build to not babel modules inside js/react sdk
[\#11949](https://github.com/vector-im/riot-web/pull/11949)
* Fix webpack to babel js-sdk & react-sdk but no other deps
[\#11944](https://github.com/vector-im/riot-web/pull/11944)
Changes in [1.5.8](https://github.com/vector-im/riot-web/releases/tag/v1.5.8) (2020-01-27)
==========================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.5.8-rc.2...v1.5.8)
* Fixes for alias display and copy / paste on composer
Changes in [1.5.8-rc.2](https://github.com/vector-im/riot-web/releases/tag/v1.5.8-rc.2) (2020-01-22)
====================================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.5.8-rc.1...v1.5.8-rc.2)
* Fix incorrect version of react-sdk
Changes in [1.5.8-rc.1](https://github.com/vector-im/riot-web/releases/tag/v1.5.8-rc.1) (2020-01-22)
====================================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.5.7...v1.5.8-rc.1)
This version contains an upgrade to the cryptography database
version. Once users run this version, their session's indexeddb
store will be upgraded and older version of Riot will no longer
be able to read it. Users will have to log out and log in if
the version of Riot is downgraded back to a previous version.
* Fix webpack config (by stealing Dave's config)
[\#11994](https://github.com/vector-im/riot-web/pull/11994)
* Fix webpack to babel js-sdk & react-sdk but no other deps
[\#11947](https://github.com/vector-im/riot-web/pull/11947)
* Update from Weblate
[\#11934](https://github.com/vector-im/riot-web/pull/11934)
* Fix rageshake post-sourcemaps
[\#11926](https://github.com/vector-im/riot-web/pull/11926)
* Fix yarn start concurrent commands
[\#11895](https://github.com/vector-im/riot-web/pull/11895)
* Run the react-sdk reskindexer for developers
[\#11894](https://github.com/vector-im/riot-web/pull/11894)
* Update labs documentation for feature_ftue_dms given new scope
[\#11893](https://github.com/vector-im/riot-web/pull/11893)
* Fix indentation on webpack config and make sourcemapped files legible
[\#11892](https://github.com/vector-im/riot-web/pull/11892)
* Remove spinner check
[\#11891](https://github.com/vector-im/riot-web/pull/11891)
* Don't minifiy builds of develop through CI packaging
[\#11867](https://github.com/vector-im/riot-web/pull/11867)
* Use Jest for tests
[\#11869](https://github.com/vector-im/riot-web/pull/11869)
* Support application/wasm in Docker image
[\#11858](https://github.com/vector-im/riot-web/pull/11858)
* Fix sourcemaps by refactoring the build system
[\#11843](https://github.com/vector-im/riot-web/pull/11843)
* Disable event indexing on develop
[\#11850](https://github.com/vector-im/riot-web/pull/11850)
* Updated blog url
[\#11792](https://github.com/vector-im/riot-web/pull/11792)
* Enable and document presence in room list feature flag
[\#11829](https://github.com/vector-im/riot-web/pull/11829)
* Add stub service worker so users can install on desktop with Chrome
[\#11774](https://github.com/vector-im/riot-web/pull/11774)
* Update from Weblate
[\#11826](https://github.com/vector-im/riot-web/pull/11826)
* Sourcemaps: develop -> feature branch
[\#11802](https://github.com/vector-im/riot-web/pull/11802)
* Update build scripts for new process
[\#11801](https://github.com/vector-im/riot-web/pull/11801)
* Make the webpack config work for us
[\#11712](https://github.com/vector-im/riot-web/pull/11712)
* Updates URL for Electron Command Line Switches
[\#11810](https://github.com/vector-im/riot-web/pull/11810)
* Import from src/ for the react-sdk and js-sdk
[\#11714](https://github.com/vector-im/riot-web/pull/11714)
* Convert components to ES6 exports
[\#11713](https://github.com/vector-im/riot-web/pull/11713)
* Remove now-retired package.json property
[\#11660](https://github.com/vector-im/riot-web/pull/11660)
Changes in [1.5.7](https://github.com/vector-im/riot-web/releases/tag/v1.5.7) (2020-01-13) Changes in [1.5.7](https://github.com/vector-im/riot-web/releases/tag/v1.5.7) (2020-01-13)
========================================================================================== ==========================================================================================
[Full Changelog](https://github.com/vector-im/riot-web/compare/v1.5.7-rc.2...v1.5.7) [Full Changelog](https://github.com/vector-im/riot-web/compare/v1.5.7-rc.2...v1.5.7)

View File

@ -1,12 +1,31 @@
Riot Riot
==== ====
Riot (formerly known as Vector) is a Matrix web client built using the [Matrix React SDK](https://github.com/matrix-org/matrix-react-sdk). Riot (formerly known as Vector) is a Matrix web client built using the [Matrix
React SDK](https://github.com/matrix-org/matrix-react-sdk).
Riot is officially supported on the web in the last 2 major versions of Chrome, Firefox, and Safari. For Riot on Desktop (electron), Supported Environments
only the officially published app is supported. Other browsers and packages may work, however official support is not provided. ======================
For accessing Riot on an Android or iOS device, check out [riot-android](https://github.com/vector-im/riot-android)
and [riot-ios](https://github.com/vector-im/riot-ios) - riot-web does not support mobile devices. Riot has several tiers of support for different environments:
* Supported
* Definition: Issues **actively triaged**, regressions **block** the release
* Last 2 major versions of Chrome, Firefox, and Safari on desktop OSes
* Latest release of official Riot Desktop app on desktop OSes
* Desktop OSes means macOS, Windows, and Linux versions for desktop devices
that are actively supported by the OS vendor and receive security updates
* Experimental
* Definition: Issues **accepted**, regressions **do not block** the release
* Riot as an installed PWA via current stable version of Chrome, Firefox, and Safari
* Mobile web for current stable version of Chrome, Firefox, and Safari on Android, iOS, and iPadOS
* Not supported
* Definition: Issues only affecting unsupported environments are **closed**
* Everything else
For accessing Riot on an Android or iOS device, we currently recommend the
native apps [riot-android](https://github.com/vector-im/riot-android)
and [riot-ios](https://github.com/vector-im/riot-ios).
Getting Started Getting Started
=============== ===============
@ -52,15 +71,6 @@ We have put some coarse mitigations into place to try to protect against this
situation, but it's still not good practice to do it in the first place. See situation, but it's still not good practice to do it in the first place. See
https://github.com/vector-im/riot-web/issues/1977 for more details. https://github.com/vector-im/riot-web/issues/1977 for more details.
The same applies for end-to-end encrypted content, but since this is decrypted
on the client, Riot needs a way to supply the decrypted content from a separate
origin to the one Riot is hosted on. This currently done with a 'cross origin
renderer' which is a small piece of javascript hosted on a different domain.
To avoid all Riot installs needing one of these to be set up, riot.im hosts
one on usercontent.riot.im which is used by default.
https://github.com/vector-im/riot-web/issues/6173 tracks progress on replacing
this with something better.
Building From Source Building From Source
==================== ====================

View File

@ -1,25 +1,23 @@
module.exports = { module.exports = {
"sourceMaps": true, "sourceMaps": true,
"presets": [ "presets": [
["@babel/preset-env", { ["@babel/preset-env", {
"targets": { "targets": [
"browsers": [ "last 2 Chrome versions", "last 2 Firefox versions", "last 2 Safari versions"
"last 2 versions" ],
] }],
} "@babel/preset-typescript",
}], "@babel/preset-flow",
"@babel/preset-typescript", "@babel/preset-react"
"@babel/preset-flow", ],
"@babel/preset-react" "plugins": [
], ["@babel/plugin-proposal-decorators", {legacy: true}],
"plugins": [ "@babel/plugin-proposal-export-default-from",
["@babel/plugin-proposal-decorators", {"legacy": true}], "@babel/plugin-proposal-numeric-separator",
"@babel/plugin-proposal-export-default-from", "@babel/plugin-proposal-class-properties",
"@babel/plugin-proposal-numeric-separator", "@babel/plugin-proposal-object-rest-spread",
"@babel/plugin-proposal-class-properties", "@babel/plugin-transform-flow-comments",
"@babel/plugin-proposal-object-rest-spread", "@babel/plugin-syntax-dynamic-import",
"@babel/plugin-transform-flow-comments", "@babel/plugin-transform-runtime"
"@babel/plugin-syntax-dynamic-import", ]
"@babel/plugin-transform-runtime"
]
}; };

17
contribute.json Normal file
View File

@ -0,0 +1,17 @@
{
"name": "Riot",
"description": "A glossy Matrix collaboration client for the web.",
"repository": {
"url": "https://github.com/vector-im/riot-web",
"license": "Apache License 2.0"
},
"bugs": {
"list": "https://github.com/vector-im/riot-web/issues",
"report": "https://github.com/vector-im/riot-web/issues/new/choose"
},
"keywords": [
"chat",
"riot",
"matrix"
]
}

View File

@ -57,11 +57,6 @@ For a good example, see https://riot.im/develop/config.json.
1. `update_base_url` (electron app only): HTTPS URL to a web server to download 1. `update_base_url` (electron app only): HTTPS URL to a web server to download
updates from. This should be the path to the directory containing `macos` updates from. This should be the path to the directory containing `macos`
and `win32` (for update packages, not installer packages). and `win32` (for update packages, not installer packages).
1. `cross_origin_renderer_url`: URL to a static HTML page hosting code to help display
encrypted file attachments. This MUST be hosted on a completely separate domain to
anything else since it is used to isolate the privileges of file attachments to this
domain. Default: `https://usercontent.riot.im/v1.html`. This needs to contain v1.html from
https://github.com/matrix-org/usercontent/blob/master/v1.html
1. `piwik`: Analytics can be disabled by setting `piwik: false` or by leaving the piwik config 1. `piwik`: Analytics can be disabled by setting `piwik: false` or by leaving the piwik config
option out of your config file. If you want to enable analytics, set `piwik` to be an object option out of your config file. If you want to enable analytics, set `piwik` to be an object
containing the following properties: containing the following properties:
@ -87,7 +82,7 @@ For a good example, see https://riot.im/develop/config.json.
default homeserver when signing up or logging in. default homeserver when signing up or logging in.
1. `permalinkPrefix`: Used to change the URL that Riot generates permalinks with. 1. `permalinkPrefix`: Used to change the URL that Riot generates permalinks with.
By default, this is "https://matrix.to" to generate matrix.to (spec) permalinks. By default, this is "https://matrix.to" to generate matrix.to (spec) permalinks.
Set this to your Riot instance URL if you run an unfederated server (eg: Set this to your Riot instance URL if you run an unfederated server (eg:
"https://riot.example.org"). "https://riot.example.org").
Note that `index.html` also has an og:image meta tag that is set to an image Note that `index.html` also has an og:image meta tag that is set to an image

View File

@ -82,12 +82,6 @@ that downloads, stores, and indexes room messages for E2E encrypted rooms.
The existing search will transparently work for encrypted rooms just like it The existing search will transparently work for encrypted rooms just like it
does for non-encrypted. does for non-encrypted.
## New invite dialog (`feature_ftue_dms`)
An improved dialog for inviting users. This replaces both the DM creation dialog
and the 'invite user' dialog, using your recent DMs as a suggestion for who to chat
with.
## Bridge info tab (`feature_bridge_state`) ## Bridge info tab (`feature_bridge_state`)
Adds a "Bridge Info" tab to the Room Settings dialog, if a compatible bridge is Adds a "Bridge Info" tab to the Room Settings dialog, if a compatible bridge is
@ -99,3 +93,8 @@ tab as the single source of truth just yet.
This adds a presence indicator in the room list next to DM rooms where the other This adds a presence indicator in the room list next to DM rooms where the other
person is online. person is online.
## Show padlocks on invite only rooms (`feature_invite_only_padlocks`)
This adds padlocks to room list tiles and room header for invite only rooms.
This feature flag (unlike most) is enabled by default.

View File

@ -47,7 +47,7 @@ Again from the `electron_app/` directory:
Recompiling Seshat itself can be done like so: Recompiling Seshat itself can be done like so:
yarn run electron-build-env -- --electron 6.1.1 -- neon build matrix-seshat --release` yarn run electron-build-env -- --electron 6.1.1 -- neon build matrix-seshat --release
Please make sure to include all the `--` as well as the `--release` command line Please make sure to include all the `--` as well as the `--release` command line
switch at the end. Modify your electron version accordingly depending on the switch at the end. Modify your electron version accordingly depending on the
@ -56,6 +56,5 @@ version that is installed on your system.
After this is done the Electron version of Riot can be run from the main folder After this is done the Electron version of Riot can be run from the main folder
as usual using: as usual using:
yarn build
yarn electron yarn electron

View File

@ -10,4 +10,6 @@ The modifier is <kbd>Ctrl</kbd> on Windows & Linux and <kbd>⌘</kbd> on Mac.
- <kbd></kbd>/<kbd></kbd> - next/prev room when focus in room list - <kbd></kbd>/<kbd></kbd> - next/prev room when focus in room list
- <kbd>Alt</kbd>+<kbd></kbd>/<kbd></kbd> - resend previous messages when the composer is in focus - <kbd>Alt</kbd>+<kbd></kbd>/<kbd></kbd> - resend previous messages when the composer is in focus
- <kbd>PageUp</kbd>/<kbd>PageDown</kbd> - scroll timeline up/down - <kbd>PageUp</kbd>/<kbd>PageDown</kbd> - scroll timeline up/down
- <kbd>Ctrl</kbd>/<kbd></kbd>+<kbd>Home</kbd>/<kbd>End</kbd> - jump to timeline start/end - <kbd>Ctrl</kbd>/<kbd></kbd>+<kbd>Home</kbd>/<kbd>End</kbd> - jump to
start/end of the composer when focused, otherwise jump to timeline start/end
- <kbd>Ctrl</kbd>/<kbd></kbd>+<kbd>`</kbd> - toggle the top left menu

View File

@ -9,6 +9,9 @@
Latest electron-builder does, but it appears to be causing issues: Latest electron-builder does, but it appears to be causing issues:
(https://github.com/electron-userland/electron-builder/issues/4390) (https://github.com/electron-userland/electron-builder/issues/4390)
--> -->
<!-- https://github.com/electron/electron-notarize#prerequisites -->
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key> <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/> <true/>
<!-- https://github.com/electron-userland/electron-builder/issues/3940 --> <!-- https://github.com/electron-userland/electron-builder/issues/3940 -->

View File

@ -1,14 +0,0 @@
#!/bin/bash
# Link to the binary
ln -sf '/opt/${productFilename}/${executable}' '/usr/bin/${executable}'
# SUID chrome-sandbox for Electron 5+
# Remove this entire file (after-install.tpl) and remove the reference in
# package.json once this change has been upstreamed so we go back to the copy
# from upstream.
# https://github.com/electron-userland/electron-builder/pull/4163
chmod 4755 '/opt/${productFilename}/chrome-sandbox' || true
update-mime-database /usr/share/mime || true
update-desktop-database /usr/share/applications || true

View File

@ -2,7 +2,7 @@
"name": "riot-web", "name": "riot-web",
"productName": "Riot", "productName": "Riot",
"main": "src/electron-main.js", "main": "src/electron-main.js",
"version": "1.5.7", "version": "1.5.13",
"description": "A feature-rich client for Matrix.org", "description": "A feature-rich client for Matrix.org",
"author": "New Vector Ltd.", "author": "New Vector Ltd.",
"dependencies": { "dependencies": {

View File

@ -35,6 +35,7 @@ const tray = require('./tray');
const vectorMenu = require('./vectormenu'); const vectorMenu = require('./vectormenu');
const webContentsHandler = require('./webcontents-handler'); const webContentsHandler = require('./webcontents-handler');
const updater = require('./updater'); const updater = require('./updater');
const protocolInit = require('./protocol');
const windowStateKeeper = require('electron-window-state'); const windowStateKeeper = require('electron-window-state');
const Store = require('electron-store'); const Store = require('electron-store');
@ -346,6 +347,18 @@ ipcMain.on('seshat', async function(ev, payload) {
} }
break; break;
case 'getStats':
if (eventIndex === null) ret = 0;
else {
try {
ret = await eventIndex.getStats();
} catch (e) {
sendError(payload.id, e);
return;
}
}
break;
case 'removeCrawlerCheckpoint': case 'removeCrawlerCheckpoint':
if (eventIndex === null) ret = false; if (eventIndex === null) ret = false;
else { else {
@ -370,6 +383,18 @@ ipcMain.on('seshat', async function(ev, payload) {
} }
break; break;
case 'loadFileEvents':
if (eventIndex === null) ret = [];
else {
try {
ret = await eventIndex.loadFileEvents(args[0]);
} catch (e) {
sendError(payload.id, e);
return;
}
}
break;
case 'loadCheckpoints': case 'loadCheckpoints':
if (eventIndex === null) ret = []; if (eventIndex === null) ret = [];
else { else {
@ -403,6 +428,9 @@ if (!gotLock) {
app.exit(); app.exit();
} }
// do this after we know we are the primary instance of the app
protocolInit();
const launcher = new AutoLaunch({ const launcher = new AutoLaunch({
name: vectorConfig.brand || 'Riot', name: vectorConfig.brand || 'Riot',
isHidden: true, isHidden: true,

View File

@ -0,0 +1,53 @@
/*
Copyright 2020 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
const {app} = require('electron');
const processUrl = (url) => {
if (!global.mainWindow) return;
console.log("Handling link: ", url);
global.mainWindow.loadURL(url.replace("riot://", "vector://"));
};
module.exports = () => {
// get all args except `hidden` as it'd mean the app would not get focused
// XXX: passing args to protocol handlers only works on Windows,
// so unpackaged deep-linking and --profile passing won't work on Mac/Linux
const args = process.argv.slice(1).filter(arg => arg !== "--hidden" && arg !== "-hidden");
if (app.isPackaged) {
app.setAsDefaultProtocolClient('riot', process.execPath, args);
} else if (process.platform === 'win32') { // on Mac/Linux this would just cause the electron binary to open
// special handler for running without being packaged, e.g `electron .` by passing our app path to electron
app.setAsDefaultProtocolClient('riot', process.execPath, [app.getAppPath(), ...args]);
}
if (process.platform === 'darwin') {
// Protocol handler for macos
app.on('open-url', function(ev, url) {
ev.preventDefault();
processUrl(url);
});
} else {
// Protocol handler for win32/Linux
app.on('second-instance', (ev, commandLine) => {
const url = commandLine[commandLine.length - 1];
if (!url.startsWith("riot://")) return;
processUrl(url);
});
}
};

View File

@ -174,19 +174,10 @@ function onEditableContextMenu(ev, params) {
module.exports = (webContents) => { module.exports = (webContents) => {
webContents.on('new-window', onWindowOrNavigate); webContents.on('new-window', onWindowOrNavigate);
// XXX: The below now does absolutely nothing because of webContents.on('will-navigate', (ev, target) => {
// https://github.com/electron/electron/issues/8841 if (target.startsWith("vector://")) return;
// Whilst this isn't a security issue since without return onWindowOrNavigate(ev, target);
// node integration and with the sandbox, it should be });
// no worse than opening the site in Chrome, it obviously
// means the user has to restart Riot to make it usable
// again (often unintuitive because it minimises to the
// system tray). We therefore need to be vigilant about
// putting target="_blank" on links in Riot (although
// we should generally be doing this anyway since links
// navigating you away from Riot in the browser is
// also annoying).
webContents.on('will-navigate', onWindowOrNavigate);
webContents.on('context-menu', function(ev, params) { webContents.on('context-menu', function(ev, params) {
if (params.linkURL || params.srcURL) { if (params.linkURL || params.srcURL) {

View File

@ -2,7 +2,7 @@
"name": "riot-web", "name": "riot-web",
"productName": "Riot", "productName": "Riot",
"main": "electron_app/src/electron-main.js", "main": "electron_app/src/electron-main.js",
"version": "1.5.7", "version": "1.5.13",
"description": "A feature-rich client for Matrix.org", "description": "A feature-rich client for Matrix.org",
"author": "New Vector Ltd.", "author": "New Vector Ltd.",
"repository": { "repository": {
@ -24,7 +24,8 @@
"LICENSE", "LICENSE",
"README.md", "README.md",
"AUTHORS.rst", "AUTHORS.rst",
"package.json" "package.json",
"contribute.json"
], ],
"style": "bundle.css", "style": "bundle.css",
"scripts": { "scripts": {
@ -65,9 +66,8 @@
"gemini-scrollbar": "github:matrix-org/gemini-scrollbar#91e1e566", "gemini-scrollbar": "github:matrix-org/gemini-scrollbar#91e1e566",
"gfm.css": "^1.1.2", "gfm.css": "^1.1.2",
"highlight.js": "^9.13.1", "highlight.js": "^9.13.1",
"matrix-js-sdk": "3.0.0", "matrix-js-sdk": "5.1.1",
"matrix-react-sdk": "1.7.6", "matrix-react-sdk": "2.2.3",
"modernizr": "^3.6.0",
"olm": "https://packages.matrix.org/npm/olm/olm-3.1.4.tgz", "olm": "https://packages.matrix.org/npm/olm/olm-3.1.4.tgz",
"postcss-easings": "^2.0.0", "postcss-easings": "^2.0.0",
"prop-types": "^15.7.2", "prop-types": "^15.7.2",
@ -107,8 +107,8 @@
"cpx": "^1.3.2", "cpx": "^1.3.2",
"cross-env": "^6.0.3", "cross-env": "^6.0.3",
"css-loader": "^3.3.2", "css-loader": "^3.3.2",
"electron-builder": "^21.2.0", "electron-builder": "^22.3.2",
"electron-builder-squirrel-windows": "^21.2.0", "electron-builder-squirrel-windows": "^22.3.2",
"electron-devtools-installer": "^2.2.4", "electron-devtools-installer": "^2.2.4",
"electron-notarize": "^0.2.0", "electron-notarize": "^0.2.0",
"eslint": "^5.8.0", "eslint": "^5.8.0",
@ -132,6 +132,7 @@
"mini-css-extract-plugin": "^0.8.0", "mini-css-extract-plugin": "^0.8.0",
"minimist": "^1.2.0", "minimist": "^1.2.0",
"mkdirp": "^0.5.1", "mkdirp": "^0.5.1",
"modernizr": "^3.6.0",
"optimize-css-assets-webpack-plugin": "^5.0.3", "optimize-css-assets-webpack-plugin": "^5.0.3",
"postcss-extend": "^1.0.5", "postcss-extend": "^1.0.5",
"postcss-import": "^12.0.1", "postcss-import": "^12.0.1",
@ -153,7 +154,7 @@
}, },
"build": { "build": {
"appId": "im.riot.app", "appId": "im.riot.app",
"electronVersion": "7.1.7", "electronVersion": "7.1.12",
"files": [ "files": [
"node_modules/**", "node_modules/**",
"src/**" "src/**"
@ -173,9 +174,6 @@
"StartupWMClass": "riot" "StartupWMClass": "riot"
} }
}, },
"deb": {
"afterInstall": "electron_app/build/linux/after-install.tpl"
},
"mac": { "mac": {
"category": "public.app-category.social-networking", "category": "public.app-category.social-networking",
"darkModeSupport": true "darkModeSupport": true
@ -191,9 +189,20 @@
"output": "electron_app/dist", "output": "electron_app/dist",
"app": "electron_app" "app": "electron_app"
}, },
"afterSign": "scripts/electron_afterSign.js" "afterSign": "scripts/electron_afterSign.js",
"protocols": [
{
"name": "riot",
"schemes": [
"riot"
]
}
]
}, },
"jest": { "jest": {
"modulePathIgnorePatterns": [
"<rootDir>/electron_app"
],
"testEnvironment": "jest-environment-jsdom-fourteen", "testEnvironment": "jest-environment-jsdom-fourteen",
"testMatch": [ "testMatch": [
"<rootDir>/test/**/*-test.js" "<rootDir>/test/**/*-test.js"

View File

@ -20,30 +20,59 @@ cd `dirname $0`
for i in matrix-js-sdk matrix-react-sdk for i in matrix-js-sdk matrix-react-sdk
do do
echo "Checking version of $i..."
depver=`cat package.json | jq -r .dependencies[\"$i\"]` depver=`cat package.json | jq -r .dependencies[\"$i\"]`
latestver=`yarn info -s $i version` latestver=`yarn info -s $i dist-tags.next`
if [ "$depver" != "$latestver" ] if [ "$depver" != "$latestver" ]
then then
echo "The latest version of $i is $latestver but package.json depends on $depver" echo "The latest version of $i is $latestver but package.json depends on $depver."
echo -n "Type 'Yes' to continue anyway: " echo -n "Type 'u' to auto-upgrade, 'c' to continue anyway, or 'a' to abort:"
read resp read resp
if [ "$resp" != "Yes" ] if [ "$resp" != "u" ] && [ "$resp" != "c" ]
then then
echo "OK, never mind." echo "Aborting."
exit 1 exit 1
fi fi
if [ "$resp" == "u" ]
then
echo "Upgrading $i to $latestver..."
yarn add -E $i@$latestver
git add -u
# The `-e` flag opens the editor and gives you a chance to check
# the upgrade for correctness.
git commit -m "Upgrade $i to $latestver" -e
fi
fi fi
done done
# bump Electron's package.json first
release="${1#v}" release="${1#v}"
tag="v${release}" tag="v${release}"
echo "electron yarn version" prerelease=0
# We check if this build is a prerelease by looking to
# see if the version has a hyphen in it. Crude,
# but semver doesn't support postreleases so anything
# with a hyphen is a prerelease.
echo $release | grep -q '-' && prerelease=1
# bump Electron's package.json first
echo "electron yarn version"
cd electron_app cd electron_app
yarn version --no-git-tag-version --new-version "$release" yarn version --no-git-tag-version --new-version "$release"
git commit package.json -m "$tag" git commit package.json -m "$tag"
cd .. cd ..
exec ./node_modules/matrix-js-sdk/release.sh -u vector-im -z "$orig_args" ./node_modules/matrix-js-sdk/release.sh -u vector-im -z "$orig_args"
if [ $prerelease -eq 0 ]
then
# For a release, reset SDK deps back to the `develop` branch.
for i in matrix-js-sdk matrix-react-sdk
do
echo "Resetting $i to develop branch..."
yarn add github:matrix-org/$i#develop
git add -u
git commit -m "Reset $i back to develop branch"
done
git push origin develop
fi

View File

@ -20,9 +20,9 @@
"feature_many_integration_managers": "labs", "feature_many_integration_managers": "labs",
"feature_mjolnir": "labs", "feature_mjolnir": "labs",
"feature_dm_verification": "labs", "feature_dm_verification": "labs",
"feature_cross_signing": "labs", "feature_cross_signing": "enable",
"feature_invite_only_padlocks": "enable",
"feature_event_indexing": "disable", "feature_event_indexing": "disable",
"feature_ftue_dms": "labs",
"feature_bridge_state": "labs", "feature_bridge_state": "labs",
"feature_presence_in_room_list": "labs" "feature_presence_in_room_list": "labs"
}, },

View File

@ -66,6 +66,7 @@ const COPY_LIST = [
["node_modules/matrix-react-sdk/res/media/**", "webapp/media"], ["node_modules/matrix-react-sdk/res/media/**", "webapp/media"],
["node_modules/olm/olm_legacy.js", "webapp", { directwatch: 1 }], ["node_modules/olm/olm_legacy.js", "webapp", { directwatch: 1 }],
["./config.json", "webapp", { directwatch: 1 }], ["./config.json", "webapp", { directwatch: 1 }],
["contribute.json", "webapp"],
]; ];
const parseArgs = require('minimist'); const parseArgs = require('minimist');

View File

@ -20,17 +20,15 @@ then
fi fi
echo "Linking js-sdk" echo "Linking js-sdk"
git clone $JS_SDK_REPO js-sdk git clone --depth 1 --branch $JS_SDK_BRANCH $JS_SDK_REPO js-sdk
cd js-sdk cd js-sdk
git checkout $JS_SDK_BRANCH
yarn link yarn link
yarn --network-timeout=100000 install yarn --network-timeout=100000 install
cd ../ cd ../
echo "Linking react-sdk" echo "Linking react-sdk"
git clone $REACT_SDK_REPO react-sdk git clone --depth 1 --branch $REACT_SDK_BRANCH $REACT_SDK_REPO react-sdk
cd react-sdk cd react-sdk
git checkout $REACT_SDK_BRANCH
yarn link yarn link
yarn link matrix-js-sdk yarn link matrix-js-sdk
yarn --network-timeout=100000 install yarn --network-timeout=100000 install

View File

@ -1,4 +1,4 @@
#!/bin/bash #!/bin/sh
set -ex set -ex
@ -11,7 +11,7 @@ DIST_VERSION=$TAG
# a few SHAs rather than a version. # a few SHAs rather than a version.
# Docker Hub doesn't always check out the tag and sometimes checks out the branch, so we should look # Docker Hub doesn't always check out the tag and sometimes checks out the branch, so we should look
# for an appropriately tagged branch as well (heads/v1.2.3). # for an appropriately tagged branch as well (heads/v1.2.3).
if [ $BRANCH != 'HEAD' && $BRANCH != 'heads/v*' ] if [[ $BRANCH != 'HEAD' && $BRANCH != 'heads/v*' ]]
then then
REACT_SHA=$(cd node_modules/matrix-react-sdk; git rev-parse --short=12 HEAD) REACT_SHA=$(cd node_modules/matrix-react-sdk; git rev-parse --short=12 HEAD)
JSSDK_SHA=$(cd node_modules/matrix-js-sdk; git rev-parse --short=12 HEAD) JSSDK_SHA=$(cd node_modules/matrix-js-sdk; git rev-parse --short=12 HEAD)

View File

@ -10,7 +10,13 @@ exports.default = async function(context) {
// from the keychain, so we need to get it from the environment. // from the keychain, so we need to get it from the environment.
const userId = process.env.NOTARIZE_APPLE_ID; const userId = process.env.NOTARIZE_APPLE_ID;
if (userId === undefined) { if (userId === undefined) {
throw new Error("User ID not found. Set NOTARIZE_APPLE_ID."); console.warn(
"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n" +
"! Skipping macOS notarisation. !\n" +
"! User ID not found, set NOTARIZE_APPLE_ID. !\n" +
"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
);
return;
} }
console.log("Notarising macOS app. This may be some time."); console.log("Notarising macOS app. This may be some time.");

View File

@ -8,23 +8,31 @@ exports.default = async function(options) {
const appOutDir = path.dirname(inPath); const appOutDir = path.dirname(inPath);
// get the token passphrase from the keychain // get the token passphrase from the keychain
const tokenPassphrase = await new Promise((resolve, reject) => { let tokenPassphrase;
execFile( try {
'security', tokenPassphrase = await new Promise((resolve, reject) => {
['find-generic-password', '-s', 'riot_signing_token', '-w'], execFile(
{}, 'security',
(err, stdout) => { ['find-generic-password', '-s', 'riot_signing_token', '-w'],
if (err) { {},
console.error("Couldn't find signing token in keychain", err); (err, stdout) => {
// electron-builder seems to print '[object Object]' on the if (err) {
// console whether you reject with an Error or a string... reject(err);
reject(err); } else {
} else { resolve(stdout.trim());
resolve(stdout.trim()); }
} },
}, );
});
} catch (err) {
console.warn(
"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n" +
"! Skipping Windows signing. !\n" +
"! Signing token not found in keychain. !\n" +
"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!",
); );
}); return;
}
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let cmdLine = 'osslsigncode sign '; let cmdLine = 'osslsigncode sign ';

View File

@ -29,7 +29,7 @@ export default class VectorEmbeddedPage extends EmbeddedPage {
translate(s) { translate(s) {
s = sanitizeHtml(_t(s)); s = sanitizeHtml(_t(s));
// ugly fix for https://github.com/vector-im/riot-web/issues/4243 // ugly fix for https://github.com/vector-im/riot-web/issues/4243
s = s.replace(/\[matrix\]/, '<a href="https://matrix.org" target="_blank" rel="noopener"><img width="79" height="34" alt="[matrix]" style="padding-left: 1px;vertical-align: middle" src="welcome/images/matrix.svg"/></a>'); s = s.replace(/\[matrix\]/, '<a href="https://matrix.org" target="_blank" rel="noreferrer noopener"><img width="79" height="34" alt="[matrix]" style="padding-left: 1px;vertical-align: middle" src="welcome/images/matrix.svg"/></a>');
return s; return s;
} }
} }

View File

@ -34,7 +34,7 @@ const VectorAuthFooter = () => {
const authFooterLinks = []; const authFooterLinks = [];
for (const linkEntry of links) { for (const linkEntry of links) {
authFooterLinks.push( authFooterLinks.push(
<a href={linkEntry.url} key={linkEntry.text} target="_blank" rel="noopener"> <a href={linkEntry.url} key={linkEntry.text} target="_blank" rel="noreferrer noopener">
{linkEntry.text} {linkEntry.text}
</a>, </a>,
); );
@ -43,7 +43,7 @@ const VectorAuthFooter = () => {
return ( return (
<div className="mx_AuthFooter"> <div className="mx_AuthFooter">
{authFooterLinks} {authFooterLinks}
<a href="https://matrix.org" target="_blank" rel="noopener">{ _t('powered by Matrix') }</a> <a href="https://matrix.org" target="_blank" rel="noreferrer noopener">{ _t('powered by Matrix') }</a>
</div> </div>
); );
}; };

View File

@ -4,22 +4,22 @@
"You need to be using HTTPS to place a screen-sharing call.": "Pro uskutečnění hovoru se sdílením obrazovky musíte používat HTTPS.", "You need to be using HTTPS to place a screen-sharing call.": "Pro uskutečnění hovoru se sdílením obrazovky musíte používat HTTPS.",
"Chat with Riot Bot": "Konverzovat s Riot Botem", "Chat with Riot Bot": "Konverzovat s Riot Botem",
"Dismiss": "Zahodit", "Dismiss": "Zahodit",
"powered by Matrix": "poháněno Matrixem", "powered by Matrix": "používá protokol Matrix",
"Riot Desktop on %(platformName)s": "Riot Desktop na %(platformName)s", "Riot Desktop on %(platformName)s": "Riot Desktop pro %(platformName)s",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s přes %(browserName)s na %(osName)s", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s přes %(browserName)s na %(osName)s",
"Custom Server Options": "Vlastní serverové volby", "Custom Server Options": "Vlastní nastavení serveru",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Decentralizovaný, šifrovaný chat a spolupráce na platformě [matrix]", "Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Decentralizovaný, šifrovaný chat a spolupráce na platformě [matrix]",
"You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Ve vlastních serverových volbách si můžete nastavit použití vlastního domovského serveru. To Vám umožní používat Riot s existujícím Matrix účtem na jiném serveru.", "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Ve vlastním nastavení serveru můžete nastavit použití vlastního domovského serveru. To vám umožní používat Riot s existujícím Matrix účtem na jiném serveru.",
"Sign In": "Přihlásit se", "Sign In": "Přihlásit se",
"Create Account": "Vytvořit účet", "Create Account": "Vytvořit účet",
"Need help?": "Chcete pomoct?", "Need help?": "Potřebujete pomoc?",
"Explore rooms": "Prohlížet místnosti", "Explore rooms": "Procházet místnosti",
"Room Directory": "Adresář místností", "Room Directory": "Adresář místností",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Konfigurace Riotu obsahuje neplatný JSON. Opravte prosím tento problém a obnovte stránku.", "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Konfigurace Riotu obsahuje neplatný JSON. Opravte prosím tento problém a obnovte stránku.",
"The message from the parser is: %(message)s": "Zpráva z parseru je: %(message)s", "The message from the parser is: %(message)s": "Zpráva z parseru je: %(message)s",
"Invalid JSON": "Neplatný JSON", "Invalid JSON": "Neplatný JSON",
"Your Riot is misconfigured": "Riot je špatně nakonfigurován", "Your Riot is misconfigured": "Riot je špatně nakonfigurován",
"Unexpected error preparing the app. See console for details.": "Neočekávaná chyba při přípravě aplikace. V konzoli je více informací.", "Unexpected error preparing the app. See console for details.": "Neočekávaná chyba při přípravě aplikace. Podrobnosti najdete v konzoli.",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Neplatná konfigurace: je možné specifikovat pouze jednu volbu z default_server_config, default_server_name, nebo default_hs_url.", "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Neplatná konfigurace: je možné specifikovat pouze jednu volbu z default_server_config, default_server_name, nebo default_hs_url.",
"Invalid configuration: no default server specified.": "Neplatná konfigurace: není zadán výchozí server." "Invalid configuration: no default server specified.": "Neplatná konfigurace: není zadán výchozí server."
} }

View File

@ -9,11 +9,11 @@
"Welcome to Riot.im": "Willkommen bei Riot.im", "Welcome to Riot.im": "Willkommen bei Riot.im",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Dezentrale, verschlüsselte Chat- &amp; Kollaborationslösung unterstützt von [matrix]", "Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Dezentrale, verschlüsselte Chat- &amp; Kollaborationslösung unterstützt von [matrix]",
"Chat with Riot Bot": "Chatte mit dem Riot Bot", "Chat with Riot Bot": "Chatte mit dem Riot Bot",
"You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Du kannst die erweiterte Serveroption nutzen um dich an einem anderen Matrixserver anzumelden, indem du eine andere Heimserver-URL angibst. Dies erlaubt dir, Riot mit einem existierenden Matrix-Konto auf einem anderen Heimserver zu nutzen.", "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Du kannst benutzerdefinierte Server-Optionen nutzen, um dich an anderen Matrix Servern anzumelden, indem du eine andere Heimserver-URL angibst. Dies erlaubt dir, Riot mit einem existierenden Matrix-Konto auf einem anderen Heimserver zu nutzen.",
"Sign In": "Anmelden", "Sign In": "Anmelden",
"Create Account": "Konto erstellen", "Create Account": "Account erstellen",
"Need help?": "Brauchst du Hilfe?", "Need help?": "Brauchst du Hilfe?",
"Explore rooms": "Räume erkunden", "Explore rooms": "Erkunde Räume",
"Room Directory": "Raumverzeichnis", "Room Directory": "Raumverzeichnis",
"Unexpected error preparing the app. See console for details.": "Unerwarteter Fehler bei der Vorbereitung der App. Siehe Konsole für Details.", "Unexpected error preparing the app. See console for details.": "Unerwarteter Fehler bei der Vorbereitung der App. Siehe Konsole für Details.",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Ungültige Konfiguration: Es kann nur eine der Optionen default_server_config, default_server_name oder default_hs_url angegeben werden.", "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Ungültige Konfiguration: Es kann nur eine der Optionen default_server_config, default_server_name oder default_hs_url angegeben werden.",
@ -21,5 +21,6 @@
"Your Riot is misconfigured": "Dein Riot ist falsch konfiguriert", "Your Riot is misconfigured": "Dein Riot ist falsch konfiguriert",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Deine Riot Konfiguration enthält ungültiges JSON. Bitte korrigiere das Problem und lade die Seite neu.", "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Deine Riot Konfiguration enthält ungültiges JSON. Bitte korrigiere das Problem und lade die Seite neu.",
"The message from the parser is: %(message)s": "Die Nachricht des Parsers ist: %(message)s", "The message from the parser is: %(message)s": "Die Nachricht des Parsers ist: %(message)s",
"Invalid JSON": "Ungültiges JSON" "Invalid JSON": "Ungültiges JSON",
"Go to your browser to complete Sign In": "Gehe zu deinem Browser, um die Anmeldung abzuschließen"
} }

View File

@ -7,6 +7,7 @@
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.", "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.",
"Invalid configuration: no default server specified.": "Invalid configuration: no default server specified.", "Invalid configuration: no default server specified.": "Invalid configuration: no default server specified.",
"Riot Desktop on %(platformName)s": "Riot Desktop on %(platformName)s", "Riot Desktop on %(platformName)s": "Riot Desktop on %(platformName)s",
"Go to your browser to complete Sign In": "Go to your browser to complete Sign In",
"Unknown device": "Unknown device", "Unknown device": "Unknown device",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s on %(osName)s", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s on %(osName)s",
"You need to be using HTTPS to place a screen-sharing call.": "You need to be using HTTPS to place a screen-sharing call.", "You need to be using HTTPS to place a screen-sharing call.": "You need to be using HTTPS to place a screen-sharing call.",

View File

@ -21,5 +21,6 @@
"Your Riot is misconfigured": "Via kliento Riot estas misagordita", "Your Riot is misconfigured": "Via kliento Riot estas misagordita",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Viaj Riot-agordoj enhavas nevalidan JSON-on. Bonvolu korekti la problemon kaj reŝarĝi la paĝon.", "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Viaj Riot-agordoj enhavas nevalidan JSON-on. Bonvolu korekti la problemon kaj reŝarĝi la paĝon.",
"The message from the parser is: %(message)s": "La mesaĝo el la analizilo estas: %(message)s", "The message from the parser is: %(message)s": "La mesaĝo el la analizilo estas: %(message)s",
"Invalid JSON": "Nevalida JSON" "Invalid JSON": "Nevalida JSON",
"Go to your browser to complete Sign In": "Iru al via foliumilo por fini la saluton"
} }

View File

@ -21,5 +21,6 @@
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Konfigurazio baliogabea: default_server_config, default_server_name, edo default_hs_url bat bakarra zehaztu daiteke.", "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Konfigurazio baliogabea: default_server_config, default_server_name, edo default_hs_url bat bakarra zehaztu daiteke.",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Zure Riot konfigurazioak baliogabeko JSON kodea du. Zuzendu arazoa eta kargatu orria berriro.", "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Zure Riot konfigurazioak baliogabeko JSON kodea du. Zuzendu arazoa eta kargatu orria berriro.",
"The message from the parser is: %(message)s": "Prozesatzailearen mezua hau da: %(message)s", "The message from the parser is: %(message)s": "Prozesatzailearen mezua hau da: %(message)s",
"Invalid JSON": "JSON baliogabea" "Invalid JSON": "JSON baliogabea",
"Go to your browser to complete Sign In": "Joan zure nabigatzailera izena ematen bukatzeko"
} }

View File

@ -21,5 +21,6 @@
"Your Riot is misconfigured": "Votre Riot est mal configuré", "Your Riot is misconfigured": "Votre Riot est mal configuré",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Votre configuration de Riot contient du JSON non valide. Corrigez ce problème et rechargez la page.", "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Votre configuration de Riot contient du JSON non valide. Corrigez ce problème et rechargez la page.",
"The message from the parser is: %(message)s": "Le message de lanalyseur est : %(message)s", "The message from the parser is: %(message)s": "Le message de lanalyseur est : %(message)s",
"Invalid JSON": "JSON non valide" "Invalid JSON": "JSON non valide",
"Go to your browser to complete Sign In": "Utilisez votre navigateur pour terminer la connexion"
} }

View File

@ -1,25 +1,26 @@
{ {
"Custom Server Options": "Egyedi szerverbeállítások", "Custom Server Options": "Egyedi szerverbeállítások",
"Dismiss": "Eltüntet", "Dismiss": "Eltüntetés",
"powered by Matrix": "Matrix hajtja", "powered by Matrix": "Matrix hajtja",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s alkalmazás %(browserName)s böngészőn %(osName)s rendszeren", "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s alkalmazás %(browserName)s böngészőn %(osName)s rendszeren",
"Riot Desktop on %(platformName)s": "Riot Desktop itt: %(platformName)s", "Riot Desktop on %(platformName)s": "Riot Desktop itt: %(platformName)s",
"Unknown device": "Ismeretlen készülék", "Unknown device": "Ismeretlen eszköz",
"You need to be using HTTPS to place a screen-sharing call.": "Képernyőmegosztás indításához HTTPS-t kell használnod.", "You need to be using HTTPS to place a screen-sharing call.": "Képernyőmegosztás indításához HTTPS-t kell használnod.",
"Welcome to Riot.im": "Üdvözöl a Riot.im", "Welcome to Riot.im": "Üdvözöl a Riot.im",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Decentralizált, titkosított csevegés és kollaboráció [matrix] alapokon", "Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Decentralizált, titkosított csevegés és kollaboráció [matrix] alapokon",
"Chat with Riot Bot": "Csevegés a Riot Robottal", "Chat with Riot Bot": "Csevegés a Riot Robottal",
"You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Használhatod az egyedi szerver beállítást más Matrix szerverre való belépéshez, azzal, hogy megadod a Matrix szerver URL-jét. Ezzel a Riot-ot használhatod más Matrix szerveren lévő fiókkal.", "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Használhatod az egyedi szerver beállítást más Matrix szerverre való belépéshez, azzal, hogy megadod a Matrix szerver URL-jét. Ezzel a Riot-ot használhatod más Matrix szerveren lévő fiókkal.",
"Sign In": "Bejelentkezés", "Sign In": "Bejelentkezés",
"Create Account": "Fiók készítés", "Create Account": "Fiók létrehozása",
"Need help?": "Segíthetünk?", "Need help?": "Segíthetünk?",
"Explore rooms": "Szobák felderítése", "Explore rooms": "Szobák felderítése",
"Room Directory": "Szoba lista", "Room Directory": "Szobalista",
"Unexpected error preparing the app. See console for details.": "Váratlan hiba történt az alkalmazás előkészítésénél. A részletekért nézd meg a konzolt.", "Unexpected error preparing the app. See console for details.": "Váratlan hiba történt az alkalmazás előkészítésénél. A részletekért nézd meg a konzolt.",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Érvénytelen konfiguráció: csak egyet lehet megadni a default_server_config, default_server_name és default_hs_url közül.", "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Érvénytelen konfiguráció: csak egyet lehet megadni a default_server_config, default_server_name és default_hs_url közül.",
"Invalid configuration: no default server specified.": "Érvénytelen konfiguráció: nincs megadva alapértelmezett szerver.", "Invalid configuration: no default server specified.": "Érvénytelen konfiguráció: nincs megadva alapértelmezett szerver.",
"Your Riot is misconfigured": "A Riotod hibásan van beállítva", "Your Riot is misconfigured": "A Riotod hibásan van beállítva",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "A Riot beállításod érvénytelen JSON szöveget tartalmaz. Kérlek javítsd és töltsd újra az oldalt.", "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "A Riot beállításod érvénytelen JSON szöveget tartalmaz. Kérlek javítsd és töltsd újra az oldalt.",
"The message from the parser is: %(message)s": "A feldolgozó algoritmus üzenete: %(message)s", "The message from the parser is: %(message)s": "A feldolgozó algoritmus üzenete: %(message)s",
"Invalid JSON": "Érvénytelen JSON" "Invalid JSON": "Érvénytelen JSON",
"Go to your browser to complete Sign In": "A böngészőben fejezd be a bejelentkezést"
} }

View File

@ -21,5 +21,6 @@
"Your Riot is misconfigured": "Il tuo Riot è configurato male", "Your Riot is misconfigured": "Il tuo Riot è configurato male",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "La tua configurazione di Riot contiene un JSON non valido. Correggi il problema e ricarica la pagina.", "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "La tua configurazione di Riot contiene un JSON non valido. Correggi il problema e ricarica la pagina.",
"The message from the parser is: %(message)s": "Il messaggio dal parser è: %(message)s", "The message from the parser is: %(message)s": "Il messaggio dal parser è: %(message)s",
"Invalid JSON": "JSON non valido" "Invalid JSON": "JSON non valido",
"Go to your browser to complete Sign In": "Vai nel tuo browser per completare l'accesso"
} }

View File

@ -0,0 +1 @@
{}

View File

@ -2,7 +2,7 @@
"Unknown device": "Nežinomas įrenginys", "Unknown device": "Nežinomas įrenginys",
"powered by Matrix": "veikia su Matrix", "powered by Matrix": "veikia su Matrix",
"Welcome to Riot.im": "Sveiki atvykę į Riot.im", "Welcome to Riot.im": "Sveiki atvykę į Riot.im",
"Chat with Riot Bot": "Kalbėtis su Riot botu", "Chat with Riot Bot": "Kalbėtis su Riot Botu",
"Riot Desktop on %(platformName)s": "Riot Desktop, naudojant %(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", "%(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 naudojant ekrano vaizdo dalijimosi funkciją, jūs turite naudoti HTTPS.", "You need to be using HTTPS to place a screen-sharing call.": "Norint skambinti naudojant ekrano vaizdo dalijimosi funkciją, jūs turite naudoti HTTPS.",
@ -21,5 +21,6 @@
"Unexpected error preparing the app. See console for details.": "Netikėta klaida ruošiant programą. Norėdami sužinoti daugiau detalių, žiūrėkite konsolę.", "Unexpected error preparing the app. See console for details.": "Netikėta klaida ruošiant programą. Norėdami sužinoti daugiau detalių, žiūrėkite konsolę.",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Klaidinga konfigūracija: galima nurodyti tik vieną iš default_server_config, default_server_name, arba default_hs_url.", "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Klaidinga konfigūracija: galima nurodyti tik vieną iš default_server_config, default_server_name, arba default_hs_url.",
"Invalid configuration: no default server specified.": "Klaidinga konfigūracija: nenurodytas numatytasis serveris.", "Invalid configuration: no default server specified.": "Klaidinga konfigūracija: nenurodytas numatytasis serveris.",
"You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Jūs galite naudoti pasirinktinius serverio nustatymus, kad prisijungtumėte prie kitų Matrix serverių, nurodydami kito serverio URL. Tai leidžia jums naudotis Riot su esama Matrix paskyra kitame serveryje." "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Jūs galite naudoti pasirinktinius serverio nustatymus, kad prisijungtumėte prie kitų Matrix serverių, nurodydami kito serverio URL. Tai leidžia jums naudotis Riot su esama Matrix paskyra kitame serveryje.",
"Go to your browser to complete Sign In": "Norėdami užbaigti prisijungimą, eikite į naršyklę"
} }

View File

@ -7,14 +7,19 @@
"You need to be using HTTPS to place a screen-sharing call.": "Du er nødt til å bruke HTTPS for å ha en samtale med skjermdeling.", "You need to be using HTTPS to place a screen-sharing call.": "Du er nødt til å bruke HTTPS for å ha en samtale med skjermdeling.",
"Dismiss": "Avvis", "Dismiss": "Avvis",
"Welcome to Riot.im": "Velkommen til Riot.im", "Welcome to Riot.im": "Velkommen til Riot.im",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Desentralisert, kryptert chat &amp; sammabeid drevet av [matrix]", "Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "Desentralisert, kryptert chat &amp; samarbeid drevet av [matrix]",
"Chat with Riot Bot": "Chat med Riot Bot", "Chat with Riot Bot": "Chat med Riot Bot",
"You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Du kan bruke instillinger for «egendefinert tjener» til å logge inn på andre Matrix tjenere ved å spesifisere en annen URL. Dette lar deg bruke Riot med en eksisterende Matrix konto på en annen hjemmetjener.", "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Du kan bruke instillinger for «egendefinert tjener» til å logge inn på andre Matrix-tjenere ved å spesifisere en annen URL. Dette lar deg bruke Riot med en eksisterende Matrix-konto på en annen hjemmetjener.",
"Sign In": "Logg inn", "Sign In": "Logg inn",
"Create Account": "Lag konto", "Create Account": "Lag konto",
"Need help?": "Trenger du hjelp?", "Need help?": "Trenger du hjelp?",
"Room Directory": "Alle rom", "Room Directory": "Alle rom",
"Explore rooms": "Se alle rom", "Explore rooms": "Se alle rom",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Riot-konfigurasjonen din inneholder ugyldig JSON. Vennligst fiks problemet og oppdater siden.", "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Riot-konfigurasjonen din inneholder ugyldig JSON. Vennligst fiks problemet og oppdater siden.",
"The message from the parser is: %(message)s": "Meldingen fra parseren er: %(message)s" "The message from the parser is: %(message)s": "Meldingen fra parseren er: %(message)s",
"Invalid JSON": "Ugyldig JSON",
"Your Riot is misconfigured": "Riot er feilkonfigurert",
"Invalid configuration: no default server specified.": "Ugyldig konfigurasjon: ingen standardserver spesifisert.",
"Unexpected error preparing the app. See console for details.": "Uventet feil oppsto mens appen ble gjort klar. Se konsollen for detaljer.",
"Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Ugyldig konfigurasjon: Spesifiser kun en av følgende: default_server_config, default_server_name eller default_hs_url."
} }

View File

@ -21,5 +21,6 @@
"Your Riot is misconfigured": "Uw Riot is onjuist geconfigureerd", "Your Riot is misconfigured": "Uw Riot is onjuist geconfigureerd",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Uw Riot-configuratie bevat ongeldige JSON. Corrigeer het probleem en herlaad de pagina.", "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Uw Riot-configuratie bevat ongeldige JSON. Corrigeer het probleem en herlaad de pagina.",
"The message from the parser is: %(message)s": "De ontleder meldt: %(message)s", "The message from the parser is: %(message)s": "De ontleder meldt: %(message)s",
"Invalid JSON": "Ongeldige JSON" "Invalid JSON": "Ongeldige JSON",
"Go to your browser to complete Sign In": "Ga naar uw browser om de aanmelding te voltooien"
} }

View File

@ -2,7 +2,7 @@
"Riot Desktop on %(platformName)s": "Riot på Skrivebord for %(platformName)s", "Riot Desktop on %(platformName)s": "Riot på Skrivebord for %(platformName)s",
"Unknown device": "Ukjend eining", "Unknown device": "Ukjend eining",
"%(appName)s via %(browserName)s on %(osName)s": "%(appName)s gjennom %(browserName)s på %(osName)s", "%(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.", "You need to be using HTTPS to place a screen-sharing call.": "Du må bruka HTTPS for å ha ein samtale med skjermdeling.",
"Dismiss": "Avvis", "Dismiss": "Avvis",
"powered by Matrix": "Matrixdriven", "powered by Matrix": "Matrixdriven",
"Welcome to Riot.im": "Velkomen til Riot.im", "Welcome to Riot.im": "Velkomen til Riot.im",
@ -11,12 +11,12 @@
"Custom Server Options": "Tilpassa tenar-innstillingar", "Custom Server Options": "Tilpassa tenar-innstillingar",
"You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Du kan nytta dei eigendefinerte tenarinstillingane for å logga inn på andre Matrix-tenarar ved å uppgje ein annan heimtenar-URL. Dette lèt deg bruka Riot med ein Matrix-konto som allereie finst på ein annan heimtenar.", "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Du kan nytta dei eigendefinerte tenarinstillingane for å logga inn på andre Matrix-tenarar ved å uppgje ein annan heimtenar-URL. Dette lèt deg bruka Riot med ein Matrix-konto som allereie finst på ein annan heimtenar.",
"Sign In": "Logg inn", "Sign In": "Logg inn",
"Create Account": "Lag brukar", "Create Account": "Opprett konto",
"Need help?": "Treng du hjelp?", "Need help?": "Treng du hjelp?",
"Explore rooms": "Utforsk romma", "Explore rooms": "Utforsk romma",
"Room Directory": "Romkatalog", "Room Directory": "Romkatalog",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Riot-konfigurasjonen din har ugyldig JSON-kode. Korriger dette og last inn sida på nytt.", "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Riot-konfigurasjonen din har ugyldig JSON-kode. Korriger dette og last inn sida på nytt.",
"The message from the parser is: %(message)s": "Meldingen frå kodetolkaren er: %(message)s", "The message from the parser is: %(message)s": "Meldinga frå kodetolkaren er: %(message)s",
"Invalid JSON": "Ugyldig JSON", "Invalid JSON": "Ugyldig JSON",
"Your Riot is misconfigured": "Riot-klienten din er feilkonfiguert", "Your Riot is misconfigured": "Riot-klienten din er feilkonfiguert",
"Unexpected error preparing the app. See console for details.": "Uventa feil under lasting av programmet. Sjå konsollen for detaljar.", "Unexpected error preparing the app. See console for details.": "Uventa feil under lasting av programmet. Sjå konsollen for detaljar.",

View File

@ -21,5 +21,6 @@
"Your Riot is misconfigured": "Ваш Riot неправильно настроен", "Your Riot is misconfigured": "Ваш Riot неправильно настроен",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Ваша конфигурация Riot содержит нерабочий JSON. Пожалуйста исправьте проблему и перезагрузите страницу.", "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Ваша конфигурация Riot содержит нерабочий JSON. Пожалуйста исправьте проблему и перезагрузите страницу.",
"The message from the parser is: %(message)s": "Сообщение из парсера: %(message)s", "The message from the parser is: %(message)s": "Сообщение из парсера: %(message)s",
"Invalid JSON": "Нерабочий JSON" "Invalid JSON": "Нерабочий JSON",
"Go to your browser to complete Sign In": "Перейдите в браузер для завершения входа"
} }

View File

@ -21,5 +21,6 @@
"Your Riot is misconfigured": "Riot-i juaj është i keqformësuar", "Your Riot is misconfigured": "Riot-i juaj është i keqformësuar",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Formësimi juaj i Riot-it përmban JSON. Ju lutemi, ndreqeni problemin dhe ringarkoni faqen.", "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Formësimi juaj i Riot-it përmban JSON. Ju lutemi, ndreqeni problemin dhe ringarkoni faqen.",
"The message from the parser is: %(message)s": "Mesazhi prej procesit është: %(message)s", "The message from the parser is: %(message)s": "Mesazhi prej procesit është: %(message)s",
"Invalid JSON": "JSON i pavlefshëm" "Invalid JSON": "JSON i pavlefshëm",
"Go to your browser to complete Sign In": "Që të plotësoni Hyrjen, kaloni te shfletuesi juaj"
} }

View File

@ -11,7 +11,7 @@
"Chat with Riot Bot": "Riot Bot ile Sohbet Et", "Chat with Riot Bot": "Riot Bot ile Sohbet Et",
"You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Özel sunucu seçenekleri kullanıp farklı bir anamakine URL'si belirleyerek diğer Matrix sunucularına giriş yapabilirsin. Bu Riot'u varolan bir Matrix hesabı ile farklı anamakine de kullanmanı sağlar.", "You can use the custom server options to sign into other Matrix servers by specifying a different homeserver URL. This allows you to use Riot with an existing Matrix account on a different homeserver.": "Özel sunucu seçenekleri kullanıp farklı bir anamakine URL'si belirleyerek diğer Matrix sunucularına giriş yapabilirsin. Bu Riot'u varolan bir Matrix hesabı ile farklı anamakine de kullanmanı sağlar.",
"Sign In": "Giriş Yap", "Sign In": "Giriş Yap",
"Create Account": "Kayıt Ol", "Create Account": "Hesap Oluştur",
"Need help?": "Yardıma mı ihtiyacın var?", "Need help?": "Yardıma mı ihtiyacın var?",
"Explore rooms": "Odaları keşfet", "Explore rooms": "Odaları keşfet",
"Room Directory": "Oda Dizini", "Room Directory": "Oda Dizini",

View File

@ -21,5 +21,6 @@
"Your Riot is misconfigured": "Je Riot is verkeerd geconfigureerd gewist", "Your Riot is misconfigured": "Je Riot is verkeerd geconfigureerd gewist",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Je Riot-configuroasje bevat oungeldigen JSON. Corrigeer t probleem en herload t blad.", "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "Je Riot-configuroasje bevat oungeldigen JSON. Corrigeer t probleem en herload t blad.",
"The message from the parser is: %(message)s": "t Bericht van de verwerker is: %(message)s", "The message from the parser is: %(message)s": "t Bericht van de verwerker is: %(message)s",
"Invalid JSON": "Oungeldigen JSON" "Invalid JSON": "Oungeldigen JSON",
"Go to your browser to complete Sign In": "Goa noa je browser voe danmeldienge te voltooin"
} }

View File

@ -7,7 +7,7 @@
"Unknown device": "未知设备", "Unknown device": "未知设备",
"You need to be using HTTPS to place a screen-sharing call.": "您需要使用 HTTPS 以进行共享屏幕通话。", "You need to be using HTTPS to place a screen-sharing call.": "您需要使用 HTTPS 以进行共享屏幕通话。",
"Welcome to Riot.im": "欢迎来到 Riot.im", "Welcome to Riot.im": "欢迎来到 Riot.im",
"Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "去中心化,加密聊天 &amp; 由 [matrix] 驱动", "Decentralised, encrypted chat &amp; collaboration powered by [matrix]": "去中心化、加密聊天与协作,由 [matrix] 驱动",
"Chat with Riot Bot": "与 Riot 机器人聊天", "Chat with Riot Bot": "与 Riot 机器人聊天",
"Sign In": "登入", "Sign In": "登入",
"Create Account": "创建帐号", "Create Account": "创建帐号",

View File

@ -21,5 +21,6 @@
"Your Riot is misconfigured": "您的 Riot 沒有設定好", "Your Riot is misconfigured": "您的 Riot 沒有設定好",
"Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "您的 Riot 包含無效的 JSON。請修正問題並重新整理頁面。", "Your Riot configuration contains invalid JSON. Please correct the problem and reload the page.": "您的 Riot 包含無效的 JSON。請修正問題並重新整理頁面。",
"The message from the parser is: %(message)s": "從解析器而來的訊息為:%(message)s", "The message from the parser is: %(message)s": "從解析器而來的訊息為:%(message)s",
"Invalid JSON": "無效的 JSON" "Invalid JSON": "無效的 JSON",
"Go to your browser to complete Sign In": "到您的瀏覽器完成登入"
} }

View File

@ -53,11 +53,23 @@ import CallHandler from 'matrix-react-sdk/src/CallHandler';
let lastLocationHashSet = null; let lastLocationHashSet = null;
function checkBrowserFeatures(featureList) { function checkBrowserFeatures() {
if (!window.Modernizr) { if (!window.Modernizr) {
console.error("Cannot check features - Modernizr global is missing."); console.error("Cannot check features - Modernizr global is missing.");
return false; return false;
} }
// custom checks atop Modernizr because it doesn't have ES2018/ES2019 checks in it for some features we depend on,
// Modernizr requires rules to be lowercase with no punctuation:
// ES2018: http://www.ecma-international.org/ecma-262/9.0/#sec-promise.prototype.finally
window.Modernizr.addTest("promiseprototypefinally", () =>
window.Promise && window.Promise.prototype && typeof window.Promise.prototype.finally === "function");
// ES2019: http://www.ecma-international.org/ecma-262/10.0/#sec-object.fromentries
window.Modernizr.addTest("objectfromentries", () =>
window.Object && typeof window.Object.fromEntries === "function");
const featureList = Object.keys(window.Modernizr);
let featureComplete = true; let featureComplete = true;
for (let i = 0; i < featureList.length; i++) { for (let i = 0; i < featureList.length; i++) {
if (window.Modernizr[featureList[i]] === undefined) { if (window.Modernizr[featureList[i]] === undefined) {
@ -69,8 +81,7 @@ function checkBrowserFeatures(featureList) {
} }
if (window.Modernizr[featureList[i]] === false) { if (window.Modernizr[featureList[i]] === false) {
console.error("Browser missing feature: '%s'", featureList[i]); console.error("Browser missing feature: '%s'", featureList[i]);
// toggle flag rather than return early so we log all missing features // toggle flag rather than return early so we log all missing features rather than just the first.
// rather than just the first.
featureComplete = false; featureComplete = false;
} }
} }
@ -162,14 +173,17 @@ function onTokenLoginCompleted() {
} }
export async function loadApp() { export async function loadApp() {
if (window.vector_indexeddb_worker_script === undefined) { // XXX: the way we pass the path to the worker script from webpack via html in body's dataset is a hack
// but alternatives seem to require changing the interface to passing Workers to js-sdk
const vectorIndexeddbWorkerScript = document.body.dataset.vectorIndexeddbWorkerScript;
if (!vectorIndexeddbWorkerScript) {
// If this is missing, something has probably gone wrong with // If this is missing, something has probably gone wrong with
// the bundling. The js-sdk will just fall back to accessing // the bundling. The js-sdk will just fall back to accessing
// indexeddb directly with no worker script, but we want to // indexeddb directly with no worker script, but we want to
// make sure the indexeddb script is present, so fail hard. // make sure the indexeddb script is present, so fail hard.
throw new Error("Missing indexeddb worker script!"); throw new Error("Missing indexeddb worker script!");
} }
MatrixClientPeg.setIndexedDbWorkerScript(window.vector_indexeddb_worker_script); MatrixClientPeg.setIndexedDbWorkerScript(vectorIndexeddbWorkerScript);
// load dendrite, if available // load dendrite, if available
if (window.vector_dendrite_worker_script && 'serviceWorker' in navigator) { if (window.vector_dendrite_worker_script && 'serviceWorker' in navigator) {
@ -295,10 +309,7 @@ export async function loadApp() {
return; return;
} }
const validBrowser = checkBrowserFeatures([ const validBrowser = checkBrowserFeatures();
"displaytable", "flexbox", "es5object", "es5function", "localstorage",
"objectfit", "indexeddb", "webworkers",
]);
const acceptInvalidBrowser = window.localStorage && window.localStorage.getItem('mx_accepts_unsupported_browser'); const acceptInvalidBrowser = window.localStorage && window.localStorage.getItem('mx_accepts_unsupported_browser');

View File

@ -22,6 +22,21 @@
<meta name="msapplication-config" content="<%= require('../../res/vector-icons/browserconfig.xml') %>"> <meta name="msapplication-config" content="<%= require('../../res/vector-icons/browserconfig.xml') %>">
<meta name="theme-color" content="#ffffff"> <meta name="theme-color" content="#ffffff">
<meta property="og:image" content="<%= htmlWebpackPlugin.options.vars.og_image_url %>" /> <meta property="og:image" content="<%= htmlWebpackPlugin.options.vars.og_image_url %>" />
<meta http-equiv="Content-Security-Policy" content="
default-src 'none';
style-src 'self' 'unsafe-inline';
script-src 'self' 'unsafe-eval' https://www.recaptcha.net https://www.gstatic.com;
img-src * blob: data:;
connect-src *;
font-src 'self' data:;
media-src * blob: data:;
child-src * blob: data:;
worker-src 'self';
frame-src * blob: data:;
form-action 'self';
object-src 'self';
manifest-src 'self';
">
<% for (var i=0; i < htmlWebpackPlugin.files.css.length; i++) { <% for (var i=0; i < htmlWebpackPlugin.files.css.length; i++) {
var file = htmlWebpackPlugin.files.css[i]; var file = htmlWebpackPlugin.files.css[i];
var match = file.match(/^bundles\/.*?\/theme-(.*)\.css$/); var match = file.match(/^bundles\/.*?\/theme-(.*)\.css$/);
@ -34,20 +49,14 @@
<% } <% }
} %> } %>
</head> </head>
<body style="height: 100%;"> <body style="height: 100%;" data-vector-indexeddb-worker-script="<%= htmlWebpackPlugin.files.chunks['indexeddb-worker'].entry %>">
<section id="matrixchat" style="height: 100%; overflow: auto;"></section>
<noscript>Sorry, Riot requires JavaScript to be enabled.</noscript> <!-- TODO: Translate this? --> <noscript>Sorry, Riot requires JavaScript to be enabled.</noscript> <!-- TODO: Translate this? -->
<script> <script>
window.vector_indexeddb_worker_script = '<%= htmlWebpackPlugin.files.chunks['indexeddb_worker'].entry %>'; window.vector_indexeddb_worker_script = '<%= htmlWebpackPlugin.files.chunks['indexeddb_worker'].entry %>';
window.vector_dendrite_worker_script = '<%= htmlWebpackPlugin.files.chunks['dendrite_sw'].entry %>'; window.vector_dendrite_worker_script = '<%= htmlWebpackPlugin.files.chunks['dendrite_sw'].entry %>';
</script> </script>
<section id="matrixchat" style="height: 100%; overflow: auto;"></section>
<script src="<%= htmlWebpackPlugin.files.chunks['bundle'].entry %>"></script> <script src="<%= htmlWebpackPlugin.files.chunks['bundle'].entry %>"></script>
<script>
// not needed if we have a dendrite SW
// if ('serviceWorker' in navigator) {
// navigator.serviceWorker.register('sw.js');
// }
</script>
<img src="<%= require('matrix-react-sdk/res/img/warning.svg') %>" width="24" height="23" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/> <img src="<%= require('matrix-react-sdk/res/img/warning.svg') %>" width="24" height="23" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/>
<img src="<%= require('matrix-react-sdk/res/img/e2e/warning.svg') %>" width="24" height="23" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/> <img src="<%= require('matrix-react-sdk/res/img/e2e/warning.svg') %>" width="24" height="23" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/>
<img src="<%= require('matrix-react-sdk/res/img/feather-customised/warning-triangle.svg') %>" width="24" height="23" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/> <img src="<%= require('matrix-react-sdk/res/img/feather-customised/warning-triangle.svg') %>" width="24" height="23" style="visibility: hidden; position: absolute; top: 0px; left: 0px;"/>

View File

@ -29,6 +29,11 @@ require('highlight.js/styles/github.css');
import './rageshakesetup'; import './rageshakesetup';
import './modernizr'; import './modernizr';
// load service worker if available on this platform
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('sw.js');
}
// Ensure the skin is the very first thing to load for the react-sdk. We don't even want to reference // Ensure the skin is the very first thing to load for the react-sdk. We don't even want to reference
// the SDK until we have to in imports. // the SDK until we have to in imports.
console.log("Loading skin..."); console.log("Loading skin...");

File diff suppressed because one or more lines are too long

View File

@ -5,6 +5,7 @@ Copyright 2016 Aviral Dasgupta
Copyright 2016 OpenMarket Ltd Copyright 2016 OpenMarket Ltd
Copyright 2018 New Vector Ltd Copyright 2018 New Vector Ltd
Copyright 2019 Michael Telatynski <7t3chguy@gmail.com> Copyright 2019 Michael Telatynski <7t3chguy@gmail.com>
Copyright 2020 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
@ -24,6 +25,11 @@ import BaseEventIndexManager from 'matrix-react-sdk/src/indexing/BaseEventIndexM
import dis from 'matrix-react-sdk/src/dispatcher'; import dis from 'matrix-react-sdk/src/dispatcher';
import { _t } from 'matrix-react-sdk/src/languageHandler'; import { _t } from 'matrix-react-sdk/src/languageHandler';
import * as rageshake from 'matrix-react-sdk/src/rageshake/rageshake'; import * as rageshake from 'matrix-react-sdk/src/rageshake/rageshake';
import {MatrixClient} from "matrix-js-sdk";
import Modal from "matrix-react-sdk/src/Modal";
import InfoDialog from "matrix-react-sdk/src/components/views/dialogs/InfoDialog";
import Spinner from "matrix-react-sdk/src/components/views/elements/Spinner";
import React from "react";
const ipcRenderer = window.ipcRenderer; const ipcRenderer = window.ipcRenderer;
@ -144,6 +150,10 @@ class SeshatIndexManager extends BaseEventIndexManager {
return this._ipcCall('removeCrawlerCheckpoint', checkpoint); return this._ipcCall('removeCrawlerCheckpoint', checkpoint);
} }
async loadFileEvents(args): Promise<[EventAndProfile]> {
return this._ipcCall('loadFileEvents', args);
}
async loadCheckpoints(): Promise<[CrawlerCheckpoint]> { async loadCheckpoints(): Promise<[CrawlerCheckpoint]> {
return this._ipcCall('loadCheckpoints'); return this._ipcCall('loadCheckpoints');
} }
@ -152,6 +162,10 @@ class SeshatIndexManager extends BaseEventIndexManager {
return this._ipcCall('closeEventIndex'); return this._ipcCall('closeEventIndex');
} }
async getStats(): Promise<> {
return this._ipcCall('getStats');
}
async deleteEventIndex(): Promise<> { async deleteEventIndex(): Promise<> {
return this._ipcCall('deleteEventIndex'); return this._ipcCall('deleteEventIndex');
} }
@ -192,16 +206,6 @@ export default class ElectronPlatform extends VectorBasePlatform {
this.startUpdateCheck = this.startUpdateCheck.bind(this); this.startUpdateCheck = this.startUpdateCheck.bind(this);
this.stopUpdateCheck = this.stopUpdateCheck.bind(this); this.stopUpdateCheck = this.stopUpdateCheck.bind(this);
this._tryPersistStorage();
}
async _tryPersistStorage() {
if (navigator.storage && navigator.storage.persist) {
const granted = await navigator.storage.persist();
const persisted = await navigator.storage.persisted();
console.log("Storage persist request granted: " + granted + " persisted: " + persisted);
}
} }
async getConfig(): Promise<{}> { async getConfig(): Promise<{}> {
@ -387,4 +391,25 @@ export default class ElectronPlatform extends VectorBasePlatform {
getEventIndexingManager(): BaseEventIndexManager | null { getEventIndexingManager(): BaseEventIndexManager | null {
return this.eventIndexManager; return this.eventIndexManager;
} }
setLanguage(preferredLangs: string[]) {
this._ipcCall('setLanguage', preferredLangs).catch(error => {
console.log("Failed to send setLanguage IPC to Electron");
console.error(error);
});
}
getSSOCallbackUrl(hsUrl: string, isUrl: string): URL {
const url = super.getSSOCallbackUrl(hsUrl, isUrl);
url.protocol = "riot";
return url;
}
startSingleSignOn(mxClient: MatrixClient, loginType: "sso" | "cas") {
super.startSingleSignOn(mxClient, loginType); // this will get intercepted by electron-main will-navigate
Modal.createTrackedDialog('Electron', 'SSO', InfoDialog, {
title: _t("Go to your browser to complete Sign In"),
description: <Spinner />,
});
}
} }

View File

@ -307,7 +307,7 @@ describe('loading:', function() {
indexedDB, indexedDB,
"matrix-js-sdk:crypto", "matrix-js-sdk:crypto",
); );
await cryptoStore._connect(); await cryptoStore.startup();
}); });
it('shows the last known room by default', function() { it('shows the last known room by default', function() {

View File

@ -40,6 +40,7 @@ module.exports = (env, argv) => {
"sql_wasm": "./node_modules/sql.js/dist/sql-wasm.wasm", "sql_wasm": "./node_modules/sql.js/dist/sql-wasm.wasm",
"dendrite_wasm": "./src/vector/dendrite.wasm", "dendrite_wasm": "./src/vector/dendrite.wasm",
"wasm_exec": "./src/vector/wasm_exec.js", "wasm_exec": "./src/vector/wasm_exec.js",
"usercontent": "./node_modules/matrix-react-sdk/src/usercontent/index.js",
// CSS themes // CSS themes
"theme-light": "./node_modules/matrix-react-sdk/res/themes/light/css/light.scss", "theme-light": "./node_modules/matrix-react-sdk/res/themes/light/css/light.scss",
@ -314,7 +315,7 @@ module.exports = (env, argv) => {
// HtmlWebpackPlugin will screw up our formatting like the names // HtmlWebpackPlugin will screw up our formatting like the names
// of the themes and which chunks we actually care about. // of the themes and which chunks we actually care about.
inject: false, inject: false,
excludeChunks: ['mobileguide'], excludeChunks: ['mobileguide', 'usercontent'],
minify: argv.mode === 'production', minify: argv.mode === 'production',
vars: { vars: {
og_image_url: og_image_url, og_image_url: og_image_url,
@ -328,6 +329,14 @@ module.exports = (env, argv) => {
minify: argv.mode === 'production', minify: argv.mode === 'production',
chunks: ['mobileguide'], chunks: ['mobileguide'],
}), }),
// This is the usercontent sandbox's entry point (separate for iframing)
new HtmlWebpackPlugin({
template: './node_modules/matrix-react-sdk/src/usercontent/index.html',
filename: 'usercontent/index.html',
minify: argv.mode === 'production',
chunks: ['usercontent'],
}),
], ],
output: { output: {

2989
yarn.lock

File diff suppressed because it is too large Load Diff