diff --git a/CHANGELOG.md b/CHANGELOG.md index d307764497..93bf83f6f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,78 @@ +Changes in [0.12.7](https://github.com/vector-im/riot-web/releases/tag/v0.12.7) (2017-10-16) +============================================================================================ +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.12.7-rc.3...v0.12.7) + + * Released versions of react-sdk & js-sdk + +Changes in [0.12.7-rc.3](https://github.com/vector-im/riot-web/releases/tag/v0.12.7-rc.3) (2017-10-13) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.12.7-rc.2...v0.12.7-rc.3) + + * Hide the join group button + [\#5275](https://github.com/vector-im/riot-web/pull/5275) + +Changes in [0.12.7-rc.2](https://github.com/vector-im/riot-web/releases/tag/v0.12.7-rc.2) (2017-10-13) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.12.7-rc.1...v0.12.7-rc.2) + + +Changes in [0.12.7-rc.1](https://github.com/vector-im/riot-web/releases/tag/v0.12.7-rc.1) (2017-10-13) +====================================================================================================== +[Full Changelog](https://github.com/vector-im/riot-web/compare/v0.12.6...v0.12.7-rc.1) + + * switch to new logos, and use import rather than VAR + [\#5203](https://github.com/vector-im/riot-web/pull/5203) + * Clarify what an integrations server is + [\#5266](https://github.com/vector-im/riot-web/pull/5266) + * Update from Weblate. + [\#5269](https://github.com/vector-im/riot-web/pull/5269) + * Remove trailing comma in JSON + [\#5167](https://github.com/vector-im/riot-web/pull/5167) + * Added default_federate property + [\#3849](https://github.com/vector-im/riot-web/pull/3849) + * CSS for greying out login form + [\#5197](https://github.com/vector-im/riot-web/pull/5197) + * Fix bug that made sub list placeholders not show for ILAG etc. + [\#5164](https://github.com/vector-im/riot-web/pull/5164) + * Factor out EditableItemList component from AliasSettings + [\#5161](https://github.com/vector-im/riot-web/pull/5161) + * Mark and remove some translations + [\#5110](https://github.com/vector-im/riot-web/pull/5110) + * CSS for "remove" button on GroupRoomTile + [\#5141](https://github.com/vector-im/riot-web/pull/5141) + * Create basic icon for the GroupRoomList tab and adding rooms to groups + [\#5140](https://github.com/vector-im/riot-web/pull/5140) + * Add button to get to MyGroups + [\#5131](https://github.com/vector-im/riot-web/pull/5131) + * Remove `key` prop pass-thru on HeaderButton + [\#5137](https://github.com/vector-im/riot-web/pull/5137) + * Implement "Add room to group" feature + [\#5125](https://github.com/vector-im/riot-web/pull/5125) + * Add Jitsi screensharing support in electron app + [\#4967](https://github.com/vector-im/riot-web/pull/4967) + * Refactor right panel header buttons + [\#5117](https://github.com/vector-im/riot-web/pull/5117) + * CSS for publicity status & toggle button + [\#5104](https://github.com/vector-im/riot-web/pull/5104) + * CSS for "X" in top right of features users/rooms + [\#5103](https://github.com/vector-im/riot-web/pull/5103) + * Include Finnish translation + [\#5051](https://github.com/vector-im/riot-web/pull/5051) + * Redesign membership section of GroupView + [\#5096](https://github.com/vector-im/riot-web/pull/5096) + * Make --config accept globs + [\#5090](https://github.com/vector-im/riot-web/pull/5090) + * CSS for GroupView: Add a User + [\#5093](https://github.com/vector-im/riot-web/pull/5093) + * T3chguy/devtools 1 + [\#5074](https://github.com/vector-im/riot-web/pull/5074) + * Alter opacity for flair + [\#5085](https://github.com/vector-im/riot-web/pull/5085) + * Fix ugly integ button + [\#5082](https://github.com/vector-im/riot-web/pull/5082) + * Group Membership UI + [\#4830](https://github.com/vector-im/riot-web/pull/4830) + Changes in [0.12.6](https://github.com/vector-im/riot-web/releases/tag/v0.12.6) (2017-09-21) ============================================================================================ [Full Changelog](https://github.com/vector-im/riot-web/compare/v0.12.5...v0.12.6) diff --git a/docs/translating-dev.md b/docs/translating-dev.md index 3bd9ddcc7d..b4682be136 100644 --- a/docs/translating-dev.md +++ b/docs/translating-dev.md @@ -28,9 +28,10 @@ function getColorName(hex) { ## Adding new strings -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. -2. 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. -3. Add the String to the ``en_EN.json`` file in ``src/i18n/strings`` (respect which repository you are on). + 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. 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). ## Adding variables inside a string. diff --git a/electron_app/package.json b/electron_app/package.json index 4d1776903a..8494b2163f 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.12.6", + "version": "0.12.7", "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 1303985ecd..5b48cf671f 100644 --- a/electron_app/riot.im/config.json +++ b/electron_app/riot.im/config.json @@ -7,7 +7,6 @@ "integrations_rest_url": "https://scalar.vector.im/api", "bug_report_endpoint_url": "https://riot.im/bugreports/submit", "welcomeUserId": "@riot-bot:matrix.org", - "enableLabs": true, "roomDirectory": { "servers": [ "matrix.org" diff --git a/package.json b/package.json index f38d18f5f1..3d87aa7de3 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.12.6", + "version": "0.12.7", "description": "A feature-rich client for Matrix.org", "author": "Vector Creations Ltd.", "repository": { @@ -28,6 +28,8 @@ "scripts": { "reskindex": "reskindex -h src/header", "reskindex:watch": "reskindex -h src/header -w", + "i18n": "matrix-gen-i18n", + "prunei18n": "matrix-prune-i18n", "build:res": "node scripts/copy-res.js", "build:modernizr": "modernizr -c .modernizr.json -d src/vector/modernizr.js", "build:compile": "npm run reskindex && babel --source-maps -d lib src", @@ -66,8 +68,8 @@ "gfm.css": "^1.1.1", "highlight.js": "^9.0.0", "linkifyjs": "^2.1.3", - "matrix-js-sdk": "0.8.4", - "matrix-react-sdk": "0.10.6", + "matrix-js-sdk": "0.8.5", + "matrix-react-sdk": "0.10.7", "modernizr": "^3.1.0", "pako": "^1.0.5", "prop-types": "^15.5.10", @@ -110,7 +112,7 @@ "eslint-config-google": "^0.7.1", "eslint-plugin-babel": "^4.1.1", "eslint-plugin-flowtype": "^2.30.0", - "eslint-plugin-react": "^6.9.0", + "eslint-plugin-react": "^7.4.0", "expect": "^1.16.0", "fs-extra": "^0.30.0", "html-webpack-plugin": "^2.24.0", diff --git a/src/components/structures/RightPanel.js b/src/components/structures/RightPanel.js index d70bfdbf86..30142ad2f3 100644 --- a/src/components/structures/RightPanel.js +++ b/src/components/structures/RightPanel.js @@ -323,14 +323,14 @@ module.exports = React.createClass({
-
{ _t('Invite to this group') }
+
{ _t('Invite to this community') }
) : (
-
{ _t('Add room to this group') }
+
{ _t('Add rooms to this community') }
); } diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 16d47d1020..1dc710ba9b 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1,217 +1,217 @@ { - "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s on %(osName)s", - "Safari and Opera work too.": "Safari and Opera work too.", - "A new version of Riot is available.": "A new version of Riot is available.", - "Add an email address above to configure email notifications": "Add an email address above to configure email notifications", - "Advanced notification settings": "Advanced notification settings", - "All messages": "All messages", - "All messages (loud)": "All messages (loud)", - "All Rooms": "All Rooms", - "All notifications are currently disabled for all targets.": "All notifications are currently disabled for all targets.", - "An error occurred whilst saving your email notification preferences.": "An error occurred whilst saving your email notification preferences.", - "Back": "Back", - "Bug report sent": "Bug report sent", - "Call invitation": "Call invitation", - "Cancel": "Cancel", - "Cancel Sending": "Cancel Sending", - "Can't update user notification settings": "Can't update user notification settings", - "Changelog": "Changelog", - "Close": "Close", - "Collapse panel": "Collapse panel", - "Collecting app version information": "Collecting app version information", - "Collecting logs": "Collecting logs", - "Couldn't find a matching Matrix room": "Couldn't find a matching Matrix room", - "Custom Server Options": "Custom Server Options", - "customServer_text": "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.", - "delete the alias.": "delete the alias.", - "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Delete the room alias %(alias)s and remove %(name)s from the directory?", - "Describe your problem here.": "Describe your problem here.", - "Developer Tools": "Developer Tools", - "Direct Chat": "Direct Chat", - "Directory": "Directory", - "Dismiss": "Dismiss", - "Download this file": "Download this file", - "Enable audible notifications in web client": "Enable audible notifications in web client", - "Enable desktop notifications": "Enable desktop notifications", - "Show message in desktop notification": "Show message in desktop notification", - "Enable email notifications": "Enable email notifications", - "Enable notifications for this account": "Enable notifications for this account", - "Enable them now": "Enable them now", - "Enter keywords separated by a comma:": "Enter keywords separated by a comma:", - "Error": "Error", - "Error saving email notification preferences": "Error saving email notification preferences", - "#example": "#example", - "Expand panel": "Expand panel", - "Failed to add tag %(tagName)s to room": "Failed to add tag %(tagName)s to room", - "Failed to change settings": "Failed to change settings", - "Failed to forget room %(errCode)s": "Failed to forget room %(errCode)s", - "Failed to update keywords": "Failed to update keywords", - "Failed to get protocol list from Home Server": "Failed to get protocol list from Home Server", - "Failed to get public room list": "Failed to get public room list", - "Failed to remove tag %(tagName)s from room": "Failed to remove tag %(tagName)s from room", - "Failed to send custom event.": "Failed to send custom event.", - "Failed to send report: ": "Failed to send report: ", - "Failed to set direct chat tag": "Failed to set direct chat tag", - "Failed to set Direct Message status of room": "Failed to set Direct Message status of room", - "Favourite": "Favourite", - "Fetching third party location failed": "Fetching third party location failed", - "Files": "Files", - "Filter results": "Filter results", - "Filter room names": "Filter room names", - "Forget": "Forget", - "Forward Message": "Forward Message", - "Guests can join": "Guests can join", - "Hide panel": "Hide panel", - "(HTTP status %(httpStatus)s)": "(HTTP status %(httpStatus)s)", - "I understand the risks and wish to continue": "I understand the risks and wish to continue", - "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:", - "Invite to this room": "Invite to this room", - "Keywords": "Keywords", - "Leave": "Leave", - "Login": "Login", - "Loading bug report module": "Loading bug report module", - "Low Priority": "Low Priority", - "Members": "Members", - "Mentions only": "Mentions only", - "Messages containing my display name": "Messages containing my display name", - "Messages containing keywords": "Messages containing keywords", - "Messages containing my user name": "Messages containing my user name", - "Messages in group chats": "Messages in group chats", - "Messages in one-to-one chats": "Messages in one-to-one chats", - "Messages sent by bot": "Messages sent by bot", - "more": "more", - "Mute": "Mute", - "No rooms to show": "No rooms to show", - "Noisy": "Noisy", - "Notification targets": "Notification targets", - "Notifications": "Notifications", - "Notifications on the following keywords follow rules which can’t be displayed here:": "Notifications on the following keywords follow rules which can’t be displayed here:", - "Notify for all other messages/rooms": "Notify for all other messages/rooms", - "Notify me for anything else": "Notify me for anything else", - "Off": "Off", - "On": "On", - "Operation failed": "Operation failed", - "Permalink": "Permalink", - "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Please describe the bug. What did you do? What did you expect to happen? What actually happened?", - "Please describe the bug and/or send logs.": "Please describe the bug and/or send logs.", - "Please install Chrome or Firefox for the best experience.": "Please install Chrome or Firefox for the best experience.", - "powered by Matrix": "powered by Matrix", - "Quote": "Quote", - "Reject": "Reject", - "Remove %(name)s from the directory?": "Remove %(name)s from the directory?", - "Remove": "Remove", - "remove %(name)s from the directory.": "remove %(name)s from the directory.", - "Remove from Directory": "Remove from Directory", - "Report a bug": "Report a bug", - "Resend": "Resend", - "Riot Desktop on %(platformName)s": "Riot Desktop on %(platformName)s", - "Riot does not know how to join a room on this network": "Riot does not know how to join a room on this network", - "Riot is not supported on mobile web. Install the app?": "Riot is not supported on mobile web. Install the app?", - "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.", - "Room not found": "Room not found", - "Search": "Search", - "Search…": "Search…", - "Search for a room": "Search for a room", - "Send": "Send", - "Send logs": "Send logs", - "Send Custom Event": "Send Custom Event", - "Send Custom State Event": "Send Custom State Event", - "Explore Room State": "Explore Room State", - "Source URL": "Source URL", - "Sorry, your browser is not able to run Riot.": "Sorry, your browser is not able to run Riot.", - "The Home Server may be too old to support third party networks": "The Home Server may be too old to support third party networks", - "There are advanced notifications which are not shown here": "There are advanced notifications which are not shown here", - "The server may be unavailable or overloaded": "The server may be unavailable or overloaded", - "This Room": "This Room", - "Unable to fetch notification target list": "Unable to fetch notification target list", - "Unable to join network": "Unable to join network", - "Unable to look up room ID from server": "Unable to look up room ID from server", - "Unavailable": "Unavailable", - "Unhide Preview": "Unhide Preview", - "Unknown device": "Unknown device", - "unknown error code": "unknown error code", - "Unnamed room": "Unnamed room", - "Update": "Update", - "Uploaded on %(date)s by %(user)s": "Uploaded on %(date)s by %(user)s", - "Uploading report": "Uploading report", - "View Decrypted Source": "View Decrypted Source", - "View Source": "View Source", - "What's New": "What's New", - "What's new?": "What's new?", - "Waiting for response from server": "Waiting for response from server", - "When I'm invited to a room": "When I'm invited to a room", - "World readable": "World readable", - "You cannot delete this image. (%(code)s)": "You cannot delete this image. (%(code)s)", - "You cannot delete this message. (%(code)s)": "You cannot delete this message. (%(code)s)", - "You are not receiving desktop notifications": "You are not receiving desktop notifications", - "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply", - "You must specify an event type!": "You must specify an event type!", - "Thank you!": "Thank you!", - "Sunday": "Sunday", - "Monday": "Monday", - "Tuesday": "Tuesday", - "Wednesday": "Wednesday", - "Thursday": "Thursday", - "Friday": "Friday", - "Saturday": "Saturday", - "Today": "Today", - "Yesterday": "Yesterday", - "OK": "OK", - "Warning": "Warning", - "Checking for an update...": "Checking for an update...", - "Error encountered (%(errorDetail)s).": "Error encountered (%(errorDetail)s).", - "Event sent!": "Event sent!", - "Event Type": "Event Type", - "Event Content": "Event Content", - "State Key": "State Key", - "No update available.": "No update available.", - "Downloading update...": "Downloading update...", - "You need to be using HTTPS to place a screen-sharing call.": "You need to be using HTTPS to place a screen-sharing call.", - "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!", - "Welcome to Riot.im": "Welcome to Riot.im", - "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralised, encrypted chat & collaboration powered by [matrix]", - "Search the room directory": "Search the room directory", - "Chat with Riot Bot": "Chat with Riot Bot", - "Get started with some tips from Riot Bot!": "Get started with some tips from Riot Bot!", - "General discussion about Matrix and Riot": "General discussion about Matrix and Riot", - "Discussion of all things Matrix!": "Discussion of all things Matrix!", - "Riot/Web & Desktop chat": "Riot/Web & Desktop chat", - "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk chat", - "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk chat", - "Matrix technical discussions": "Matrix technical discussions", - "Running Matrix services": "Running Matrix services", - "Community-run support for Synapse": "Community-run support for Synapse", - "Admin support for Dendrite": "Admin support for Dendrite", - "Announcements about Synapse releases": "Announcements about Synapse releases", - "Support for those using and running matrix-appservice-irc": "Support for those using and running matrix-appservice-irc", - "Building services on Matrix": "Building services on Matrix", - "Support for those using the Matrix spec": "Support for those using the Matrix spec", - "Design and implementation of E2E in Matrix": "Design and implementation of E2E in Matrix", - "Implementing VR services with Matrix": "Implementing VR services with Matrix", - "Implementing VoIP services with Matrix": "Implementing VoIP services with Matrix", - "Discussion of the Identity Service API": "Discussion of the Identity Service API", - "Support for those using, running and writing other bridges": "Support for those using, running and writing other bridges", - "Contributing code to Matrix and Riot": "Contributing code to Matrix and Riot", - "Dev chat for the Riot/Web dev team": "Dev chat for the Riot/Web dev team", - "Dev chat for the Dendrite dev team": "Dev chat for the Dendrite dev team", - "Co-ordination for Riot/Web translators": "Co-ordination for Riot/Web translators", - "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!", - "Failed to change password. Is your password correct?": "Failed to change password. Is your password correct?", - "You have successfully set a password!": "You have successfully set a password!", - "You can now return to your account after signing out, and sign in on other devices.": "You can now return to your account after signing out, and sign in on other devices.", - "Continue": "Continue", - "Pin Message": "Pin Message", - "Unpin Message": "Unpin Message", - "Jump to message": "Jump to message", - "No pinned messages.": "No pinned messages.", - "Loading...": "Loading...", - "Please set a password!": "Please set a password!", - "This will allow you to return to your account after signing out, and sign in on other devices.": "This will allow you to return to your account after signing out, and sign in on other devices.", - "You have successfully set a password and an email address!": "You have successfully set a password and an email address!", - "Remember, you can always set an email address in user settings if you change your mind.": "Remember, you can always set an email address in user settings if you change your mind.", - "To return to your account in future you need to set a password": "To return to your account in future you need to set a password", - "Set Password": "Set Password", - "Couldn't load home page": "Couldn't load home page", - "Invite to this group": "Invite to this group", - "Add room to this group": "Add room to this group" + "Riot is not supported on mobile web. Install the app?": "Riot is not supported on mobile web. Install the app?", + "Collecting app version information": "Collecting app version information", + "Collecting logs": "Collecting logs", + "Uploading report": "Uploading report", + "Waiting for response from server": "Waiting for response from server", + "Riot Desktop on %(platformName)s": "Riot Desktop on %(platformName)s", + "Unknown device": "Unknown device", + "%(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.", + "Messages containing my display name": "Messages containing my display name", + "Messages containing my user name": "Messages containing my user name", + "Messages in one-to-one chats": "Messages in one-to-one chats", + "Messages in group chats": "Messages in group chats", + "When I'm invited to a room": "When I'm invited to a room", + "Call invitation": "Call invitation", + "Messages sent by bot": "Messages sent by bot", + "Error saving email notification preferences": "Error saving email notification preferences", + "An error occurred whilst saving your email notification preferences.": "An error occurred whilst saving your email notification preferences.", + "Keywords": "Keywords", + "Enter keywords separated by a comma:": "Enter keywords separated by a comma:", + "OK": "OK", + "Failed to change settings": "Failed to change settings", + "Operation failed": "Operation failed", + "Can't update user notification settings": "Can't update user notification settings", + "Failed to update keywords": "Failed to update keywords", + "Messages containing keywords": "Messages containing keywords", + "Notify for all other messages/rooms": "Notify for all other messages/rooms", + "Notify me for anything else": "Notify me for anything else", + "Enable notifications for this account": "Enable notifications for this account", + "All notifications are currently disabled for all targets.": "All notifications are currently disabled for all targets.", + "Add an email address above to configure email notifications": "Add an email address above to configure email notifications", + "Enable email notifications": "Enable email notifications", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Notifications on the following keywords follow rules which can’t be displayed here:", + "Unable to fetch notification target list": "Unable to fetch notification target list", + "Notification targets": "Notification targets", + "Advanced notification settings": "Advanced notification settings", + "There are advanced notifications which are not shown here": "There are advanced notifications which are not shown here", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply", + "Enable desktop notifications": "Enable desktop notifications", + "Show message in desktop notification": "Show message in desktop notification", + "Enable audible notifications in web client": "Enable audible notifications in web client", + "Off": "Off", + "On": "On", + "Noisy": "Noisy", + "Failed to set direct chat tag": "Failed to set direct chat tag", + "Failed to remove tag %(tagName)s from room": "Failed to remove tag %(tagName)s from room", + "Failed to add tag %(tagName)s to room": "Failed to add tag %(tagName)s to room", + "Search…": "Search…", + "Search": "Search", + "This Room": "This Room", + "All Rooms": "All Rooms", + "Sunday": "Sunday", + "Monday": "Monday", + "Tuesday": "Tuesday", + "Wednesday": "Wednesday", + "Thursday": "Thursday", + "Friday": "Friday", + "Saturday": "Saturday", + "Today": "Today", + "Yesterday": "Yesterday", + "Custom Server Options": "Custom Server Options", + "customServer_text": "customServer_text", + "Dismiss": "Dismiss", + "powered by Matrix": "powered by Matrix", + "You are not receiving desktop notifications": "You are not receiving desktop notifications", + "Enable them now": "Enable them now", + "What's New": "What's New", + "Update": "Update", + "What's new?": "What's new?", + "A new version of Riot is available.": "A new version of Riot is available.", + "To return to your account in future you need to set a password": "To return to your account in future you need to set a password", + "Set Password": "Set Password", + "Error encountered (%(errorDetail)s).": "Error encountered (%(errorDetail)s).", + "Checking for an update...": "Checking for an update...", + "No update available.": "No update available.", + "Downloading update...": "Downloading update...", + "Warning": "Warning", + "Error": "Error", + "You cannot delete this image. (%(code)s)": "You cannot delete this image. (%(code)s)", + "Uploaded on %(date)s by %(user)s": "Uploaded on %(date)s by %(user)s", + "Remove": "Remove", + "Close": "Close", + "Download this file": "Download this file", + "Please describe the bug and/or send logs.": "Please describe the bug and/or send logs.", + "Loading bug report module": "Loading bug report module", + "Bug report sent": "Bug report sent", + "Thank you!": "Thank you!", + "Failed to send report: ": "Failed to send report: ", + "Cancel": "Cancel", + "Report a bug": "Report a bug", + "Please describe the bug. What did you do? What did you expect to happen? What actually happened?": "Please describe the bug. What did you do? What did you expect to happen? What actually happened?", + "Describe your problem here.": "Describe your problem here.", + "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:": "In order to diagnose problems, logs from this client will be sent with this bug report. If you would prefer to only send the text above, please untick:", + "Send logs": "Send logs", + "Send": "Send", + "Unavailable": "Unavailable", + "Changelog": "Changelog", + "Back": "Back", + "You must specify an event type!": "You must specify an event type!", + "Event sent!": "Event sent!", + "Failed to send custom event.": "Failed to send custom event.", + "Event Type": "Event Type", + "Event Content": "Event Content", + "State Key": "State Key", + "Edit": "Edit", + "Filter results": "Filter results", + "Send Custom Event": "Send Custom Event", + "Send Custom State Event": "Send Custom State Event", + "Explore Room State": "Explore Room State", + "Developer Tools": "Developer Tools", + "You have successfully set a password!": "You have successfully set a password!", + "You have successfully set a password and an email address!": "You have successfully set a password and an email address!", + "You can now return to your account after signing out, and sign in on other devices.": "You can now return to your account after signing out, and sign in on other devices.", + "Remember, you can always set an email address in user settings if you change your mind.": "Remember, you can always set an email address in user settings if you change your mind.", + "Continue": "Continue", + "Failed to change password. Is your password correct?": "Failed to change password. Is your password correct?", + "(HTTP status %(httpStatus)s)": "(HTTP status %(httpStatus)s)", + "Please set a password!": "Please set a password!", + "This will allow you to return to your account after signing out, and sign in on other devices.": "This will allow you to return to your account after signing out, and sign in on other devices.", + "You cannot delete this message. (%(code)s)": "You cannot delete this message. (%(code)s)", + "Resend": "Resend", + "Cancel Sending": "Cancel Sending", + "Forward Message": "Forward Message", + "Unpin Message": "Unpin Message", + "Pin Message": "Pin Message", + "View Source": "View Source", + "View Decrypted Source": "View Decrypted Source", + "Unhide Preview": "Unhide Preview", + "Permalink": "Permalink", + "Quote": "Quote", + "Source URL": "Source URL", + "Failed to set Direct Message status of room": "Failed to set Direct Message status of room", + "unknown error code": "unknown error code", + "Failed to forget room %(errCode)s": "Failed to forget room %(errCode)s", + "All messages (loud)": "All messages (loud)", + "All messages": "All messages", + "Mentions only": "Mentions only", + "Mute": "Mute", + "Leave": "Leave", + "Forget": "Forget", + "Reject": "Reject", + "Favourite": "Favourite", + "Low Priority": "Low Priority", + "Direct Chat": "Direct Chat", + "Sorry, your browser is not able to run Riot.": "Sorry, your browser is not able to run Riot.", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.", + "Please install Chrome or Firefox for the best experience.": "Please install Chrome or Firefox for the best experience.", + "Safari and Opera work too.": "Safari and Opera work too.", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!", + "I understand the risks and wish to continue": "I understand the risks and wish to continue", + "Couldn't load home page": "Couldn't load home page", + "Login": "Login", + "Register": "Register", + "Invite to this room": "Invite to this room", + "Members": "Members", + "Files": "Files", + "Notifications": "Notifications", + "Rooms": "Rooms", + "Hide panel": "Hide panel", + "Invite to this community": "Invite to this community", + "Add rooms to this community": "Add rooms to this community", + "Failed to get protocol list from Home Server": "Failed to get protocol list from Home Server", + "The Home Server may be too old to support third party networks": "The Home Server may be too old to support third party networks", + "Failed to get public room list": "Failed to get public room list", + "The server may be unavailable or overloaded": "The server may be unavailable or overloaded", + "Unnamed room": "Unnamed room", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Delete the room alias %(alias)s and remove %(name)s from the directory?", + "Remove %(name)s from the directory?": "Remove %(name)s from the directory?", + "Remove from Directory": "Remove from Directory", + "remove %(name)s from the directory.": "remove %(name)s from the directory.", + "delete the alias.": "delete the alias.", + "Unable to join network": "Unable to join network", + "Riot does not know how to join a room on this network": "Riot does not know how to join a room on this network", + "Room not found": "Room not found", + "Couldn't find a matching Matrix room": "Couldn't find a matching Matrix room", + "Fetching third party location failed": "Fetching third party location failed", + "Unable to look up room ID from server": "Unable to look up room ID from server", + "World readable": "World readable", + "Guests can join": "Guests can join", + "Directory": "Directory", + "No rooms to show": "No rooms to show", + "Search for a room": "Search for a room", + "#example": "#example", + "more": "more", + "Expand panel": "Expand panel", + "Collapse panel": "Collapse panel", + "Filter room names": "Filter room names", + "Welcome to Riot.im": "Welcome to Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralised, encrypted chat & collaboration powered by [matrix]", + "Search the room directory": "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!": "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!", + "Chat with Riot Bot": "Chat with Riot Bot", + "Get started with some tips from Riot Bot!": "Get started with some tips from Riot Bot!", + "General discussion about Matrix and Riot": "General discussion about Matrix and Riot", + "Discussion of all things Matrix!": "Discussion of all things Matrix!", + "Riot/Web & Desktop chat": "Riot/Web & Desktop chat", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk chat", + "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk chat", + "Matrix technical discussions": "Matrix technical discussions", + "Running Matrix services": "Running Matrix services", + "Community-run support for Synapse": "Community-run support for Synapse", + "Admin support for Dendrite": "Admin support for Dendrite", + "Announcements about Synapse releases": "Announcements about Synapse releases", + "Support for those using and running matrix-appservice-irc": "Support for those using and running matrix-appservice-irc", + "Building services on Matrix": "Building services on Matrix", + "Support for those using the Matrix spec": "Support for those using the Matrix spec", + "Design and implementation of E2E in Matrix": "Design and implementation of E2E in Matrix", + "Implementing VR services with Matrix": "Implementing VR services with Matrix", + "Implementing VoIP services with Matrix": "Implementing VoIP services with Matrix", + "Discussion of the Identity Service API": "Discussion of the Identity Service API", + "Support for those using, running and writing other bridges": "Support for those using, running and writing other bridges", + "Contributing code to Matrix and Riot": "Contributing code to Matrix and Riot", + "Dev chat for the Riot/Web dev team": "Dev chat for the Riot/Web dev team", + "Dev chat for the Dendrite dev team": "Dev chat for the Dendrite dev team", + "Co-ordination for Riot/Web translators": "Co-ordination for Riot/Web translators" } diff --git a/src/i18n/strings/gl.json b/src/i18n/strings/gl.json index f8a80cf5f7..6286fe56d0 100644 --- a/src/i18n/strings/gl.json +++ b/src/i18n/strings/gl.json @@ -219,7 +219,6 @@ "Set Password": "Establecer contrasinal", "Couldn't load home page": "Non se cargou a páxina de inicio", "Invite to this group": "Convidar a este grupo", - "Add room to this group": "Engadir sala a este grupo", "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Pode que os configurase nun cliente diferente de Riot. Non pode establecelos desde Riot pero aínda así aplicaranse", "Riot/Android & matrix-android-sdk chat": "Chat para Riot/Android & matrix-android-sdk" } diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json index 81834d5cd9..1a177017b8 100644 --- a/src/i18n/strings/it.json +++ b/src/i18n/strings/it.json @@ -206,6 +206,5 @@ "Event Type": "Tipo di Evento", "Event Content": "Contenuto dell'Evento", "State Key": "Chiave dello Stato", - "Invite to this group": "Invita in questo gruppo", - "Add room to this group": "Aggiungi stanza a questo gruppo" + "Invite to this group": "Invita in questo gruppo" } diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index 620e916900..1311a76996 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -207,6 +207,5 @@ "Event sent!": "Event verstuurd!", "Event Type": "Event-type", "Event Content": "Event-inhoud", - "State Key": "Toestandssleutel", - "Add room to this group": "Voeg een ruimte aan deze groep toe" + "State Key": "Toestandssleutel" } diff --git a/src/i18n/strings/pt.json b/src/i18n/strings/pt.json index a8e8282902..78d3a50c96 100644 --- a/src/i18n/strings/pt.json +++ b/src/i18n/strings/pt.json @@ -209,6 +209,5 @@ "Couldn't load home page": "Não foi possível carregar a página inicial", "Invite to this group": "Convidar para este grupo", "Filter results": "Filtrar resultados", - "You must specify an event type!": "Tem que especificar um tipo de evento!", - "Add room to this group": "Adicionar sala a este grupo" + "You must specify an event type!": "Tem que especificar um tipo de evento!" } diff --git a/src/i18n/strings/pt_BR.json b/src/i18n/strings/pt_BR.json index 67240c202b..22a47c6507 100644 --- a/src/i18n/strings/pt_BR.json +++ b/src/i18n/strings/pt_BR.json @@ -210,6 +210,5 @@ "Event Type": "Tipo do Evento", "Event Content": "Conteúdo do Evento", "State Key": "Chave do Estado", - "Invite to this group": "Convide para este grupo", - "Add room to this group": "Adicione sala para este grupo" + "Invite to this group": "Convide para este grupo" } diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json index 4fa3d7ebd2..a64d87c73f 100644 --- a/src/i18n/strings/uk.json +++ b/src/i18n/strings/uk.json @@ -207,6 +207,5 @@ "Event Type": "Тип західу", "Event Content": "Зміст заходу", "State Key": "Ключ стану", - "Invite to this group": "Запросити в цю групу", - "Add room to this group": "Додати кімнату в цю группу" + "Invite to this group": "Запросити в цю групу" } diff --git a/src/skins/vector/css/_common.scss b/src/skins/vector/css/_common.scss index 3189deb0b2..bf742cd0c5 100644 --- a/src/skins/vector/css/_common.scss +++ b/src/skins/vector/css/_common.scss @@ -38,8 +38,8 @@ body { -webkit-font-smoothing: subpixel-antialiased; } -div.error { - color: red; +div.error, div.warning { + color: $warning-color; } h2 { diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_GroupView.scss b/src/skins/vector/css/matrix-react-sdk/structures/_GroupView.scss index 838f147e84..35cb5acc7e 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_GroupView.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_GroupView.scss @@ -19,6 +19,9 @@ limitations under the License. width: 100%; margin-left: auto; margin-right: auto; + display: flex; + flex-direction: column; + overflow: hidden; } .mx_GroupView_error { @@ -27,15 +30,13 @@ limitations under the License. .mx_GroupView_header { max-width: 960px; - margin: auto; - height: 70px; + min-height: 70px; align-items: center; display: flex; - margin-bottom: 20px; } .mx_GroupView_header_view { - border-bottom: 1px solid #e5e5e5; + border-bottom: 1px solid $primary-hairline-color; } .mx_GroupView_header_avatar, .mx_GroupView_header_info { @@ -53,6 +54,23 @@ limitations under the License. pointer-events: none; } +.mx_GroupView_editable { + border-bottom: 1px solid $strong-input-border-color ! important; + min-width: 150px; + cursor: text; +} + +.mx_GroupView_editable:focus { + border-bottom: 1px solid $accent-color ! important; + outline: none; + box-shadow: none; +} + +.mx_GroupView_header_name:hover div:not(.mx_GroupView_editable) { + color: $accent-color; + cursor: pointer; +} + .mx_GroupView_avatarPicker { position: relative; } @@ -102,10 +120,6 @@ limitations under the License. border-bottom: 1px solid transparent; } -.mx_GroupView_header_name input, .mx_GroupView_header_shortDesc input { - width: 400px; -} - .mx_GroupView_header_shortDesc { vertical-align: bottom; float: left; @@ -133,10 +147,55 @@ limitations under the License. top: 5px; } +.mx_GroupView_body { + flex-grow: 1; +} + +.mx_GroupView_rooms { + flex-grow: 1; + display: flex; + flex-direction: column; + min-height: 200px; + user-select: none; +} + +.mx_GroupView_rooms_header h3 { + margin-bottom: 10px +} + +.mx_GroupView_rooms_header .mx_AccessibleButton { + padding-left: 14px; + margin-bottom: 14px; + height: 24px; +} + +.mx_GroupView_rooms_header_addButton { + display: inline-block; +} + +.mx_GroupView_rooms_header_addButton object { + pointer-events: none; +} + +.mx_GroupView_rooms_header_addButton_label { + display: inline-block; + vertical-align: top; + line-height: 24px; + padding-left: 28px; + color: $accent-color; +} + +.mx_GroupView_rooms .mx_RoomDetailList { + flex-grow: 1; + border-top: 1px solid $primary-hairline-color; + padding-top: 10px; +} + +.mx_GroupView .mx_RoomView_messageListWrapper { + justify-content: flex-start; +} + .mx_GroupView_membershipSection { - margin-left: auto; - margin-right: auto; - margin-bottom: 11px; color: $greyed-fg-color; } @@ -158,6 +217,23 @@ limitations under the License. margin-left: 8px; } +.mx_GroupView_memberSettings_toggle label { + cursor: pointer; + user-select: none; +} + +.mx_GroupView_memberSettings h3 { + text-transform: uppercase; + color: $h3-color; + font-weight: 600; + font-size: 13px; + margin-bottom: 10px; +} + +.mx_GroupView_memberSettings input { + margin-right: 6px; +} + .mx_GroupView_featuredThings { margin-top: 20px; } @@ -215,7 +291,11 @@ limitations under the License. display: none; } -.mx_GroupView_editLongDesc { - width: 100%; +.mx_GroupView_body .gm-scroll-view > *{ + margin: 0px 50px 11px 68px; +} + +.mx_GroupView_groupDesc textarea { + width: 50%; height: 150px; } diff --git a/src/skins/vector/css/matrix-react-sdk/structures/_MyGroups.scss b/src/skins/vector/css/matrix-react-sdk/structures/_MyGroups.scss index 3a363744b0..979a21a8eb 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/_MyGroups.scss +++ b/src/skins/vector/css/matrix-react-sdk/structures/_MyGroups.scss @@ -57,3 +57,49 @@ limitations under the License. .mx_MyGroups_content { clear: left; } + +.mx_MyGroups_joinedGroups { + display: flex; + flex-direction: row; + flex-flow: wrap; + justify-content: space-around; +} + +.mx_MyGroups_joinedGroups .mx_GroupTile { + width: 300px; + height: 75px; + margin-bottom: 15px; + margin-right: 10px; + display: flex; + align-items: flex-start; + cursor: pointer; +} + +.mx_GroupTile_profile { + margin-left: 10px; + display: flex; + flex-direction: column; + justify-content: center; +} + +.mx_GroupTile_profile h3.mx_GroupTile_name { + margin: 0px; + font-size: 15px; +} + +.mx_GroupTile_profile .mx_GroupTile_groupId { + font-size: 13px; +} + +.mx_GroupTile_profile .mx_GroupTile_desc { + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + font-size: 13px; + max-height: 36px; + overflow: hidden; +} + +.mx_GroupTile_profile .mx_GroupTile_groupId { + opacity: 0.7; +} diff --git a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ChatInviteDialog.scss b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ChatInviteDialog.scss index 38bb4f01c3..a950ea8d12 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ChatInviteDialog.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/dialogs/_ChatInviteDialog.scss @@ -14,6 +14,14 @@ See the License for the specific language governing permissions and limitations under the License. */ +.mx_ChatInviteDialog { + /* XXX: padding-left is on mx_Dialog but padding-right has subsequently + * been added on other dialogs. Surely all our dialogs should have consistent + * right hand padding? + */ + padding-right: 58px; +} + /* Using a textarea for this element, to circumvent autofill */ .mx_ChatInviteDialog_input, .mx_ChatInviteDialog_input:focus diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_EntityTile.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_EntityTile.scss index de6c343bfe..712e4bae74 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_EntityTile.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_EntityTile.scss @@ -56,6 +56,8 @@ limitations under the License. overflow: hidden; font-size: 14px; text-overflow: ellipsis; + white-space: nowrap; + max-width: 135px; } .mx_EntityTile_details { @@ -66,8 +68,6 @@ limitations under the License. .mx_EntityTile_name_hover { font-size: 13px; - overflow: hidden; - text-overflow: ellipsis; } .mx_EntityTile_chevron { diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss index 84a6a583ac..dd41483b6c 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MemberList.scss @@ -92,6 +92,7 @@ limitations under the License. } */ +.mx_GroupMemberList_invited h2, .mx_MemberList_invited h2 { text-transform: uppercase; color: $h3-color; diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss index 05cdfba8fc..b16cf8b6a4 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_RoomHeader.scss @@ -60,6 +60,10 @@ limitations under the License. padding-right: 12px; } +.mx_RoomHeader_textButton_danger { + background-color: $warning-color; +} + .mx_RoomHeader_cancelButton { order: 2; cursor: pointer; diff --git a/src/skins/vector/img/icons-groups.svg b/src/skins/vector/img/icons-groups.svg index 35ced645de..8f89ba83c4 100644 --- a/src/skins/vector/img/icons-groups.svg +++ b/src/skins/vector/img/icons-groups.svg @@ -1,127 +1,26 @@ - - - - - - image/svg+xml - - 81230A28-D944-4572-B5DB-C03CAA2B1FCA - - - - - - 81230A28-D944-4572-B5DB-C03CAA2B1FCA - Created with sketchtool. - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + diff --git a/src/skins/vector/img/icons-room-add.svg b/src/skins/vector/img/icons-room-add.svg index df421c8ed8..fc0ab750b6 100644 --- a/src/skins/vector/img/icons-room-add.svg +++ b/src/skins/vector/img/icons-room-add.svg @@ -1,159 +1,23 @@ - - - - - - image/svg+xml - - 81230A28-D944-4572-B5DB-C03CAA2B1FCA - - - - - - 81230A28-D944-4572-B5DB-C03CAA2B1FCA - Created with sketchtool. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + diff --git a/src/skins/vector/img/icons-room.svg b/src/skins/vector/img/icons-room.svg index 12978cc25f..d2abb21301 100644 --- a/src/skins/vector/img/icons-room.svg +++ b/src/skins/vector/img/icons-room.svg @@ -1,109 +1,12 @@ - - - - - - image/svg+xml - - 81230A28-D944-4572-B5DB-C03CAA2B1FCA - - - - - - - - 81230A28-D944-4572-B5DB-C03CAA2B1FCA - Created with sketchtool. - - - - - - - - - - - - - - - - + + + + + + + + + diff --git a/src/vector/index.js b/src/vector/index.js index c0cb64102e..a08397ce5a 100644 --- a/src/vector/index.js +++ b/src/vector/index.js @@ -69,6 +69,8 @@ import Promise from 'bluebird'; var request = require('browser-request'); import * as UserSettingsStore from 'matrix-react-sdk/lib/UserSettingsStore'; 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'; import url from 'url'; @@ -248,13 +250,13 @@ async function loadApp() { if (!preventRedirect) { if (/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream) { - if (confirm(languageHandler._t("Riot is not supported on mobile web. Install the app?"))) { + 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)) { - if (confirm(languageHandler._t("Riot is not supported on mobile web. Install the app?"))) { + 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; }