signal-desktop/_locales/en/messages.json

989 lines
39 KiB
JSON
Raw Normal View History

2015-12-14 23:10:49 +00:00
{
"mainMenuFile": {
"message": "&File",
"description": "The label that is used for the File menu in the program main menu. The '&' indicates that the following letter will be used as the keyboard 'shortcut letter' for accessing the menu with the Alt-<letter> combination."
},
"mainMenuEdit": {
"message": "&Edit",
"description": "The label that is used for the Edit menu in the program main menu. The '&' indicates that the following letter will be used as the keyboard 'shortcut letter' for accessing the menu with the Alt-<letter> combination."
},
"mainMenuView": {
"message": "&View",
"description": "The label that is used for the View menu in the program main menu. The '&' indicates that the following letter will be used as the keyboard 'shortcut letter' for accessing the menu with the Alt-<letter> combination."
},
"mainMenuWindow": {
"message": "&Window",
"description": "The label that is used for the Window menu in the program main menu. The '&' indicates that the following letter will be used as the keyboard 'shortcut letter' for accessing the menu with the Alt-<letter> combination."
},
"mainMenuHelp": {
"message": "&Help",
"description": "The label that is used for the Help menu in the program main menu. The '&' indicates that the following letter will be used as the keyboard 'shortcut letter' for accessing the menu with the Alt-<letter> combination."
},
UX Improvements: Global Menu & Copy Changes (#2078) - [x] Removed ‘Restart Signal’ global menu item - [x] Change _Click to create contact…_ to _Start conversation…_ - [x] Move global menu (top-left kebab) into OS menu bar, i.e. **Settings** > **Preferences…** - [x] Add tests for OS menu bar templates - [x] Fix bug with **Window** menu on macOS when showing setup options - [x] Use _Title Case_ for all OS menu bar menu items for consistency commit dedf7c9af0de90980388559659df0d92a77b864c Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:53:42 2018 -0500 Use ‘Title Case’ to be consistent with OS menus References: - Apple: - https://developer.apple.com/macos/human-interface-guidelines/menus/menu-anatomy/#menu-and-menu-item-titles - https://developer.apple.com/library/content/documentation/FinalCutProX/Conceptual/FxPlugHIG/TextStyleGuidelines/TextStyleGuidelines.html#//apple_ref/doc/uid/TP40013782-CH6-SW1 - https://titlecaseconverter.com/ commit 3286da29b334bd4526c587b17707c2f230cec8f5 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:36:50 2018 -0500 Fix bug for macOS ‘Window’ menu with setup options commit 236a23d1eafe2a16073394a27b9013298b682a25 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:27:46 2018 -0500 Test menus with included setup options commit c5d5f5abb8d7f52d6a4aa182a86c92f7ddceade0 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:10:27 2018 -0500 Move settings (‘Preferences’) into OS-level menu This reduces our reliance on custom UI until we have more design resources. commit 027803f8f4983cffa443f0beff1854dcf541689b Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:02:56 2018 -0500 Prepare tests for menu with/without included setup commit 9e2f006924b85eb249a8a1261c1c4dd1a706afa6 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 15:55:46 2018 -0500 Destructure `includeSetup` commit 6b2a1eccdf724fd722e58415d2700da73942d9e8 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 15:55:14 2018 -0500 :abc: `createTemplate` `options` commit c2fecba34b153fed106f414ed3347d46299f6fe5 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:49:55 2018 -0500 Test menu for Windows and Linux commit 60281b1af9ad1f022cdbc40711ebd0b688a7355d Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:40:39 2018 -0500 Add `yarn run test-app` command commit 1a0489919c0a97b03fe88196260fef894fb3d9e4 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:40:29 2018 -0500 Add test for `SignalMenu.createTemplate` on macOS commit 9638b86c0f00f231e44562a5aa01626f0e5fdd8b Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:34:46 2018 -0500 Make `createTemplate` pure Extracting `options.platform` makes it easier to test without having to stub `process.platform`. commit 9c26404892d7c9a7bd0199a9e8367a165a3b365c Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:47:39 2018 -0500 Extract `locale.load` `appLocale` & `logger` for testability This allows us to run this code in a non-Electron environment, e.g. Node.js Mocha test suite. commit 710b22438df25c8d5e8431845a035c55ec8fc0b7 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:46:13 2018 -0500 :abc: npm scripts commit 9ae22937fbce078f91443023b560b3c0468c1380 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:45:30 2018 -0500 Use 2-space indendation for `app` module tests commit 22c26baf6159bd2e1f5a787c10e2260f09395329 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:22:55 2018 -0500 Prefer named exports commit 9c9526195266ac77ac2ca04135a1e675f617dfd2 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:22:46 2018 -0500 :abc: Organize `require`s commit 2f144d24d9e9a9ef72fe418996e3c911b304b00a Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:13:50 2018 -0500 Remove existing global hamburger menu This will be replaced by a OS-level ‘Preferences’ menu. commit f5adb374cb742e5f319ececda8ab6d8adee88d7e Author: Daniel Gasienica <daniel@gasienica.ch> Date: Mon Feb 26 18:40:54 2018 -0500 Remove ‘Restart Signal’ menu from settings Apparently, this is a remnant from the Chrome web application. commit d7a206bc8e67ef44022085e804ca040ed1b219f7 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Mon Feb 26 17:16:49 2018 -0500 Clarify label for starting a new conversation When user a enters a number that is not a contact, we prompt them to start a new conversation. commit 715a4064367fb61d85c1a4f9d48261b2ce002435 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Mon Feb 26 16:46:26 2018 -0500 Use ‘Enter name or number’ as prompt’ This follows implementation of Android and recommendation from Alissa.
2018-03-02 20:59:39 +00:00
"mainMenuSettings": {
"message": "Preferences…",
"description": "The label that is used for the Preferences menu in the program main menu. This should be consistent with the standard naming for Preferences on the operating system."
},
New design for import/install, 'light' import (#2053) - A new design for the import flow. It features: - Icons at the top of every screen - Gray background, blue buttons, thinner text - Simpler copy - A new design for the install flow. It features: - Immediate entry into the QR code screen - Animated dots to show that we're loading the QR code from the server - Fewer screens: 1) QR 2) device name 3) sync-in-progress - When not set up, the app opens directly into the install screen, which has been streamlined. The `--import` command-line argument will cause the app to open directly into the import flow. - Support for two different flavors of builds - the normal build will open into the standard registration flow, and the import flavor will be exactly the same except during setup it will open directly into the import flow. - A new design for the (dev-only) standalone registration view - When these install sequences are active, the OS File menu has entries to allow you to switch the method of setup you'd like to use. These go away as soon as the first step is taken in any of these flows. - The device name (chosen on initial setup) is now shown in the settings panel - At the end of a light import, we hand off to the normal device link screen, starting at the QR code. On a full import, we remove the sensitive encryption information in the export to prevent conflicts on multiple imports. - `Whisper.Backup.exportToDirectory()` takes an options object so you can tell it to do a light export. - `Whisper.Backup.importFromDirectory()` takes an options object so you can force it to load only the light components found on disk. It also returns an object so you can tell whether a given import was a full import or light import. - On start of import, we build a list of all the ids present in the messages, conversations, and groups stores in IndexedDB. This can take some time if a lot of data is in the database already, but it makes the subsequent deduplicated import very fast. - Disappearing messages are now excluded when exporting - Remove some TODOs in the tests
2018-02-22 18:40:32 +00:00
"menuSetupWithImport": {
UX Improvements: Global Menu & Copy Changes (#2078) - [x] Removed ‘Restart Signal’ global menu item - [x] Change _Click to create contact…_ to _Start conversation…_ - [x] Move global menu (top-left kebab) into OS menu bar, i.e. **Settings** > **Preferences…** - [x] Add tests for OS menu bar templates - [x] Fix bug with **Window** menu on macOS when showing setup options - [x] Use _Title Case_ for all OS menu bar menu items for consistency commit dedf7c9af0de90980388559659df0d92a77b864c Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:53:42 2018 -0500 Use ‘Title Case’ to be consistent with OS menus References: - Apple: - https://developer.apple.com/macos/human-interface-guidelines/menus/menu-anatomy/#menu-and-menu-item-titles - https://developer.apple.com/library/content/documentation/FinalCutProX/Conceptual/FxPlugHIG/TextStyleGuidelines/TextStyleGuidelines.html#//apple_ref/doc/uid/TP40013782-CH6-SW1 - https://titlecaseconverter.com/ commit 3286da29b334bd4526c587b17707c2f230cec8f5 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:36:50 2018 -0500 Fix bug for macOS ‘Window’ menu with setup options commit 236a23d1eafe2a16073394a27b9013298b682a25 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:27:46 2018 -0500 Test menus with included setup options commit c5d5f5abb8d7f52d6a4aa182a86c92f7ddceade0 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:10:27 2018 -0500 Move settings (‘Preferences’) into OS-level menu This reduces our reliance on custom UI until we have more design resources. commit 027803f8f4983cffa443f0beff1854dcf541689b Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:02:56 2018 -0500 Prepare tests for menu with/without included setup commit 9e2f006924b85eb249a8a1261c1c4dd1a706afa6 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 15:55:46 2018 -0500 Destructure `includeSetup` commit 6b2a1eccdf724fd722e58415d2700da73942d9e8 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 15:55:14 2018 -0500 :abc: `createTemplate` `options` commit c2fecba34b153fed106f414ed3347d46299f6fe5 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:49:55 2018 -0500 Test menu for Windows and Linux commit 60281b1af9ad1f022cdbc40711ebd0b688a7355d Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:40:39 2018 -0500 Add `yarn run test-app` command commit 1a0489919c0a97b03fe88196260fef894fb3d9e4 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:40:29 2018 -0500 Add test for `SignalMenu.createTemplate` on macOS commit 9638b86c0f00f231e44562a5aa01626f0e5fdd8b Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:34:46 2018 -0500 Make `createTemplate` pure Extracting `options.platform` makes it easier to test without having to stub `process.platform`. commit 9c26404892d7c9a7bd0199a9e8367a165a3b365c Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:47:39 2018 -0500 Extract `locale.load` `appLocale` & `logger` for testability This allows us to run this code in a non-Electron environment, e.g. Node.js Mocha test suite. commit 710b22438df25c8d5e8431845a035c55ec8fc0b7 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:46:13 2018 -0500 :abc: npm scripts commit 9ae22937fbce078f91443023b560b3c0468c1380 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:45:30 2018 -0500 Use 2-space indendation for `app` module tests commit 22c26baf6159bd2e1f5a787c10e2260f09395329 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:22:55 2018 -0500 Prefer named exports commit 9c9526195266ac77ac2ca04135a1e675f617dfd2 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:22:46 2018 -0500 :abc: Organize `require`s commit 2f144d24d9e9a9ef72fe418996e3c911b304b00a Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:13:50 2018 -0500 Remove existing global hamburger menu This will be replaced by a OS-level ‘Preferences’ menu. commit f5adb374cb742e5f319ececda8ab6d8adee88d7e Author: Daniel Gasienica <daniel@gasienica.ch> Date: Mon Feb 26 18:40:54 2018 -0500 Remove ‘Restart Signal’ menu from settings Apparently, this is a remnant from the Chrome web application. commit d7a206bc8e67ef44022085e804ca040ed1b219f7 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Mon Feb 26 17:16:49 2018 -0500 Clarify label for starting a new conversation When user a enters a number that is not a contact, we prompt them to start a new conversation. commit 715a4064367fb61d85c1a4f9d48261b2ce002435 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Mon Feb 26 16:46:26 2018 -0500 Use ‘Enter name or number’ as prompt’ This follows implementation of Android and recommendation from Alissa.
2018-03-02 20:59:39 +00:00
"message": "Set Up with Import",
New design for import/install, 'light' import (#2053) - A new design for the import flow. It features: - Icons at the top of every screen - Gray background, blue buttons, thinner text - Simpler copy - A new design for the install flow. It features: - Immediate entry into the QR code screen - Animated dots to show that we're loading the QR code from the server - Fewer screens: 1) QR 2) device name 3) sync-in-progress - When not set up, the app opens directly into the install screen, which has been streamlined. The `--import` command-line argument will cause the app to open directly into the import flow. - Support for two different flavors of builds - the normal build will open into the standard registration flow, and the import flavor will be exactly the same except during setup it will open directly into the import flow. - A new design for the (dev-only) standalone registration view - When these install sequences are active, the OS File menu has entries to allow you to switch the method of setup you'd like to use. These go away as soon as the first step is taken in any of these flows. - The device name (chosen on initial setup) is now shown in the settings panel - At the end of a light import, we hand off to the normal device link screen, starting at the QR code. On a full import, we remove the sensitive encryption information in the export to prevent conflicts on multiple imports. - `Whisper.Backup.exportToDirectory()` takes an options object so you can tell it to do a light export. - `Whisper.Backup.importFromDirectory()` takes an options object so you can force it to load only the light components found on disk. It also returns an object so you can tell whether a given import was a full import or light import. - On start of import, we build a list of all the ids present in the messages, conversations, and groups stores in IndexedDB. This can take some time if a lot of data is in the database already, but it makes the subsequent deduplicated import very fast. - Disappearing messages are now excluded when exporting - Remove some TODOs in the tests
2018-02-22 18:40:32 +00:00
"description": "When the application is not yet set up, menu option to start up the import sequence"
},
"menuSetupAsNewDevice": {
UX Improvements: Global Menu & Copy Changes (#2078) - [x] Removed ‘Restart Signal’ global menu item - [x] Change _Click to create contact…_ to _Start conversation…_ - [x] Move global menu (top-left kebab) into OS menu bar, i.e. **Settings** > **Preferences…** - [x] Add tests for OS menu bar templates - [x] Fix bug with **Window** menu on macOS when showing setup options - [x] Use _Title Case_ for all OS menu bar menu items for consistency commit dedf7c9af0de90980388559659df0d92a77b864c Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:53:42 2018 -0500 Use ‘Title Case’ to be consistent with OS menus References: - Apple: - https://developer.apple.com/macos/human-interface-guidelines/menus/menu-anatomy/#menu-and-menu-item-titles - https://developer.apple.com/library/content/documentation/FinalCutProX/Conceptual/FxPlugHIG/TextStyleGuidelines/TextStyleGuidelines.html#//apple_ref/doc/uid/TP40013782-CH6-SW1 - https://titlecaseconverter.com/ commit 3286da29b334bd4526c587b17707c2f230cec8f5 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:36:50 2018 -0500 Fix bug for macOS ‘Window’ menu with setup options commit 236a23d1eafe2a16073394a27b9013298b682a25 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:27:46 2018 -0500 Test menus with included setup options commit c5d5f5abb8d7f52d6a4aa182a86c92f7ddceade0 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:10:27 2018 -0500 Move settings (‘Preferences’) into OS-level menu This reduces our reliance on custom UI until we have more design resources. commit 027803f8f4983cffa443f0beff1854dcf541689b Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:02:56 2018 -0500 Prepare tests for menu with/without included setup commit 9e2f006924b85eb249a8a1261c1c4dd1a706afa6 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 15:55:46 2018 -0500 Destructure `includeSetup` commit 6b2a1eccdf724fd722e58415d2700da73942d9e8 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 15:55:14 2018 -0500 :abc: `createTemplate` `options` commit c2fecba34b153fed106f414ed3347d46299f6fe5 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:49:55 2018 -0500 Test menu for Windows and Linux commit 60281b1af9ad1f022cdbc40711ebd0b688a7355d Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:40:39 2018 -0500 Add `yarn run test-app` command commit 1a0489919c0a97b03fe88196260fef894fb3d9e4 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:40:29 2018 -0500 Add test for `SignalMenu.createTemplate` on macOS commit 9638b86c0f00f231e44562a5aa01626f0e5fdd8b Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:34:46 2018 -0500 Make `createTemplate` pure Extracting `options.platform` makes it easier to test without having to stub `process.platform`. commit 9c26404892d7c9a7bd0199a9e8367a165a3b365c Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:47:39 2018 -0500 Extract `locale.load` `appLocale` & `logger` for testability This allows us to run this code in a non-Electron environment, e.g. Node.js Mocha test suite. commit 710b22438df25c8d5e8431845a035c55ec8fc0b7 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:46:13 2018 -0500 :abc: npm scripts commit 9ae22937fbce078f91443023b560b3c0468c1380 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:45:30 2018 -0500 Use 2-space indendation for `app` module tests commit 22c26baf6159bd2e1f5a787c10e2260f09395329 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:22:55 2018 -0500 Prefer named exports commit 9c9526195266ac77ac2ca04135a1e675f617dfd2 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:22:46 2018 -0500 :abc: Organize `require`s commit 2f144d24d9e9a9ef72fe418996e3c911b304b00a Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:13:50 2018 -0500 Remove existing global hamburger menu This will be replaced by a OS-level ‘Preferences’ menu. commit f5adb374cb742e5f319ececda8ab6d8adee88d7e Author: Daniel Gasienica <daniel@gasienica.ch> Date: Mon Feb 26 18:40:54 2018 -0500 Remove ‘Restart Signal’ menu from settings Apparently, this is a remnant from the Chrome web application. commit d7a206bc8e67ef44022085e804ca040ed1b219f7 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Mon Feb 26 17:16:49 2018 -0500 Clarify label for starting a new conversation When user a enters a number that is not a contact, we prompt them to start a new conversation. commit 715a4064367fb61d85c1a4f9d48261b2ce002435 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Mon Feb 26 16:46:26 2018 -0500 Use ‘Enter name or number’ as prompt’ This follows implementation of Android and recommendation from Alissa.
2018-03-02 20:59:39 +00:00
"message": "Set Up as New Device",
New design for import/install, 'light' import (#2053) - A new design for the import flow. It features: - Icons at the top of every screen - Gray background, blue buttons, thinner text - Simpler copy - A new design for the install flow. It features: - Immediate entry into the QR code screen - Animated dots to show that we're loading the QR code from the server - Fewer screens: 1) QR 2) device name 3) sync-in-progress - When not set up, the app opens directly into the install screen, which has been streamlined. The `--import` command-line argument will cause the app to open directly into the import flow. - Support for two different flavors of builds - the normal build will open into the standard registration flow, and the import flavor will be exactly the same except during setup it will open directly into the import flow. - A new design for the (dev-only) standalone registration view - When these install sequences are active, the OS File menu has entries to allow you to switch the method of setup you'd like to use. These go away as soon as the first step is taken in any of these flows. - The device name (chosen on initial setup) is now shown in the settings panel - At the end of a light import, we hand off to the normal device link screen, starting at the QR code. On a full import, we remove the sensitive encryption information in the export to prevent conflicts on multiple imports. - `Whisper.Backup.exportToDirectory()` takes an options object so you can tell it to do a light export. - `Whisper.Backup.importFromDirectory()` takes an options object so you can force it to load only the light components found on disk. It also returns an object so you can tell whether a given import was a full import or light import. - On start of import, we build a list of all the ids present in the messages, conversations, and groups stores in IndexedDB. This can take some time if a lot of data is in the database already, but it makes the subsequent deduplicated import very fast. - Disappearing messages are now excluded when exporting - Remove some TODOs in the tests
2018-02-22 18:40:32 +00:00
"description": "When the application is not yet set up, menu option to start up the set up as fresh device"
},
"menuSetupAsStandalone": {
UX Improvements: Global Menu & Copy Changes (#2078) - [x] Removed ‘Restart Signal’ global menu item - [x] Change _Click to create contact…_ to _Start conversation…_ - [x] Move global menu (top-left kebab) into OS menu bar, i.e. **Settings** > **Preferences…** - [x] Add tests for OS menu bar templates - [x] Fix bug with **Window** menu on macOS when showing setup options - [x] Use _Title Case_ for all OS menu bar menu items for consistency commit dedf7c9af0de90980388559659df0d92a77b864c Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:53:42 2018 -0500 Use ‘Title Case’ to be consistent with OS menus References: - Apple: - https://developer.apple.com/macos/human-interface-guidelines/menus/menu-anatomy/#menu-and-menu-item-titles - https://developer.apple.com/library/content/documentation/FinalCutProX/Conceptual/FxPlugHIG/TextStyleGuidelines/TextStyleGuidelines.html#//apple_ref/doc/uid/TP40013782-CH6-SW1 - https://titlecaseconverter.com/ commit 3286da29b334bd4526c587b17707c2f230cec8f5 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:36:50 2018 -0500 Fix bug for macOS ‘Window’ menu with setup options commit 236a23d1eafe2a16073394a27b9013298b682a25 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:27:46 2018 -0500 Test menus with included setup options commit c5d5f5abb8d7f52d6a4aa182a86c92f7ddceade0 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:10:27 2018 -0500 Move settings (‘Preferences’) into OS-level menu This reduces our reliance on custom UI until we have more design resources. commit 027803f8f4983cffa443f0beff1854dcf541689b Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:02:56 2018 -0500 Prepare tests for menu with/without included setup commit 9e2f006924b85eb249a8a1261c1c4dd1a706afa6 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 15:55:46 2018 -0500 Destructure `includeSetup` commit 6b2a1eccdf724fd722e58415d2700da73942d9e8 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 15:55:14 2018 -0500 :abc: `createTemplate` `options` commit c2fecba34b153fed106f414ed3347d46299f6fe5 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:49:55 2018 -0500 Test menu for Windows and Linux commit 60281b1af9ad1f022cdbc40711ebd0b688a7355d Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:40:39 2018 -0500 Add `yarn run test-app` command commit 1a0489919c0a97b03fe88196260fef894fb3d9e4 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:40:29 2018 -0500 Add test for `SignalMenu.createTemplate` on macOS commit 9638b86c0f00f231e44562a5aa01626f0e5fdd8b Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:34:46 2018 -0500 Make `createTemplate` pure Extracting `options.platform` makes it easier to test without having to stub `process.platform`. commit 9c26404892d7c9a7bd0199a9e8367a165a3b365c Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:47:39 2018 -0500 Extract `locale.load` `appLocale` & `logger` for testability This allows us to run this code in a non-Electron environment, e.g. Node.js Mocha test suite. commit 710b22438df25c8d5e8431845a035c55ec8fc0b7 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:46:13 2018 -0500 :abc: npm scripts commit 9ae22937fbce078f91443023b560b3c0468c1380 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:45:30 2018 -0500 Use 2-space indendation for `app` module tests commit 22c26baf6159bd2e1f5a787c10e2260f09395329 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:22:55 2018 -0500 Prefer named exports commit 9c9526195266ac77ac2ca04135a1e675f617dfd2 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:22:46 2018 -0500 :abc: Organize `require`s commit 2f144d24d9e9a9ef72fe418996e3c911b304b00a Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:13:50 2018 -0500 Remove existing global hamburger menu This will be replaced by a OS-level ‘Preferences’ menu. commit f5adb374cb742e5f319ececda8ab6d8adee88d7e Author: Daniel Gasienica <daniel@gasienica.ch> Date: Mon Feb 26 18:40:54 2018 -0500 Remove ‘Restart Signal’ menu from settings Apparently, this is a remnant from the Chrome web application. commit d7a206bc8e67ef44022085e804ca040ed1b219f7 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Mon Feb 26 17:16:49 2018 -0500 Clarify label for starting a new conversation When user a enters a number that is not a contact, we prompt them to start a new conversation. commit 715a4064367fb61d85c1a4f9d48261b2ce002435 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Mon Feb 26 16:46:26 2018 -0500 Use ‘Enter name or number’ as prompt’ This follows implementation of Android and recommendation from Alissa.
2018-03-02 20:59:39 +00:00
"message": "Set Up as Standalone Device",
New design for import/install, 'light' import (#2053) - A new design for the import flow. It features: - Icons at the top of every screen - Gray background, blue buttons, thinner text - Simpler copy - A new design for the install flow. It features: - Immediate entry into the QR code screen - Animated dots to show that we're loading the QR code from the server - Fewer screens: 1) QR 2) device name 3) sync-in-progress - When not set up, the app opens directly into the install screen, which has been streamlined. The `--import` command-line argument will cause the app to open directly into the import flow. - Support for two different flavors of builds - the normal build will open into the standard registration flow, and the import flavor will be exactly the same except during setup it will open directly into the import flow. - A new design for the (dev-only) standalone registration view - When these install sequences are active, the OS File menu has entries to allow you to switch the method of setup you'd like to use. These go away as soon as the first step is taken in any of these flows. - The device name (chosen on initial setup) is now shown in the settings panel - At the end of a light import, we hand off to the normal device link screen, starting at the QR code. On a full import, we remove the sensitive encryption information in the export to prevent conflicts on multiple imports. - `Whisper.Backup.exportToDirectory()` takes an options object so you can tell it to do a light export. - `Whisper.Backup.importFromDirectory()` takes an options object so you can force it to load only the light components found on disk. It also returns an object so you can tell whether a given import was a full import or light import. - On start of import, we build a list of all the ids present in the messages, conversations, and groups stores in IndexedDB. This can take some time if a lot of data is in the database already, but it makes the subsequent deduplicated import very fast. - Disappearing messages are now excluded when exporting - Remove some TODOs in the tests
2018-02-22 18:40:32 +00:00
"description": "Only available on development modes, menu option to open up the standalone device setup sequence"
},
"loading": {
"message": "Loading...",
"description": "Message shown on the loading screen before we've loaded any messages"
},
2018-03-22 15:52:52 +00:00
"optimizingApplication": {
"message": "Optimizing application...",
"description": "Message shown on the loading screen while we are doing application optimizations"
},
"chooseDirectory": {
New design for import/install, 'light' import (#2053) - A new design for the import flow. It features: - Icons at the top of every screen - Gray background, blue buttons, thinner text - Simpler copy - A new design for the install flow. It features: - Immediate entry into the QR code screen - Animated dots to show that we're loading the QR code from the server - Fewer screens: 1) QR 2) device name 3) sync-in-progress - When not set up, the app opens directly into the install screen, which has been streamlined. The `--import` command-line argument will cause the app to open directly into the import flow. - Support for two different flavors of builds - the normal build will open into the standard registration flow, and the import flavor will be exactly the same except during setup it will open directly into the import flow. - A new design for the (dev-only) standalone registration view - When these install sequences are active, the OS File menu has entries to allow you to switch the method of setup you'd like to use. These go away as soon as the first step is taken in any of these flows. - The device name (chosen on initial setup) is now shown in the settings panel - At the end of a light import, we hand off to the normal device link screen, starting at the QR code. On a full import, we remove the sensitive encryption information in the export to prevent conflicts on multiple imports. - `Whisper.Backup.exportToDirectory()` takes an options object so you can tell it to do a light export. - `Whisper.Backup.importFromDirectory()` takes an options object so you can force it to load only the light components found on disk. It also returns an object so you can tell whether a given import was a full import or light import. - On start of import, we build a list of all the ids present in the messages, conversations, and groups stores in IndexedDB. This can take some time if a lot of data is in the database already, but it makes the subsequent deduplicated import very fast. - Disappearing messages are now excluded when exporting - Remove some TODOs in the tests
2018-02-22 18:40:32 +00:00
"message": "Choose folder",
"description": "Button to allow the user to find a folder on disk"
Full export, migration banner, and full migration workflow - behind flag (#1342) * Add support for backup and restore This first pass works for all stores except messages, pending some scaling improvements. // FREEBIE * Import of messages and attachments Properly sanitize filenames. Logging information that will help with debugging but won't threaten privacy (no contact or group names), where the on-disk directories have this information to make things human-readable FREEBIE * First fully operational single-action export and import! FREEBIE * Add migration export flow A banner alert leads to a blocking ui for the migration. We close the socket and wait for incoming messages to drain before starting the export. FREEBIE * A number of updates for the export flow 1. We don't immediately pop the directory selection dialog box, instead showing an explicit 'choose directory' button after explaining what is about to happen 2. We show a 'submit debug log' button on most steps of the process 3. We handle export errors and encourage the user to double-check their filesystem then submit their log 4. We are resilient to restarts during the process 5. We handle the user cancelling out of the directory selection dialog differently from other errors. 6. The export process is now serialized: non-messages, then messages. 7. After successful export, show where the data is on disk FREEBUE * Put migration behind a flag FREEBIE * Shut down websocket before proceeding with export FREEBIE * Add MigrationView to test/index.html to fix test FREEBIE * Remove 'Submit Debug Log' button when the export process is complete FREEBIE * Create a 'Signal Export' directory below user-chosen dir This cleans things up a bit so we don't litter the user's target directory with lots of stuff. FREEBIE * Clarify MessageReceiver.drain() method comments FREEBIE * A couple updates for clarity - event names, else handling Also the removal of wait(), which wasn't used anywhere. FREEBIE * A number of wording updates for the export flow FREEBIE * Export complete: put dir on its own line, make text selectable FREEBIE
2017-08-28 20:06:10 +00:00
},
New design for import/install, 'light' import (#2053) - A new design for the import flow. It features: - Icons at the top of every screen - Gray background, blue buttons, thinner text - Simpler copy - A new design for the install flow. It features: - Immediate entry into the QR code screen - Animated dots to show that we're loading the QR code from the server - Fewer screens: 1) QR 2) device name 3) sync-in-progress - When not set up, the app opens directly into the install screen, which has been streamlined. The `--import` command-line argument will cause the app to open directly into the import flow. - Support for two different flavors of builds - the normal build will open into the standard registration flow, and the import flavor will be exactly the same except during setup it will open directly into the import flow. - A new design for the (dev-only) standalone registration view - When these install sequences are active, the OS File menu has entries to allow you to switch the method of setup you'd like to use. These go away as soon as the first step is taken in any of these flows. - The device name (chosen on initial setup) is now shown in the settings panel - At the end of a light import, we hand off to the normal device link screen, starting at the QR code. On a full import, we remove the sensitive encryption information in the export to prevent conflicts on multiple imports. - `Whisper.Backup.exportToDirectory()` takes an options object so you can tell it to do a light export. - `Whisper.Backup.importFromDirectory()` takes an options object so you can force it to load only the light components found on disk. It also returns an object so you can tell whether a given import was a full import or light import. - On start of import, we build a list of all the ids present in the messages, conversations, and groups stores in IndexedDB. This can take some time if a lot of data is in the database already, but it makes the subsequent deduplicated import very fast. - Disappearing messages are now excluded when exporting - Remove some TODOs in the tests
2018-02-22 18:40:32 +00:00
"loadDataHeader": {
"message": "Load your data",
"description": "Header shown on the first screen in the data import process"
},
New design for import/install, 'light' import (#2053) - A new design for the import flow. It features: - Icons at the top of every screen - Gray background, blue buttons, thinner text - Simpler copy - A new design for the install flow. It features: - Immediate entry into the QR code screen - Animated dots to show that we're loading the QR code from the server - Fewer screens: 1) QR 2) device name 3) sync-in-progress - When not set up, the app opens directly into the install screen, which has been streamlined. The `--import` command-line argument will cause the app to open directly into the import flow. - Support for two different flavors of builds - the normal build will open into the standard registration flow, and the import flavor will be exactly the same except during setup it will open directly into the import flow. - A new design for the (dev-only) standalone registration view - When these install sequences are active, the OS File menu has entries to allow you to switch the method of setup you'd like to use. These go away as soon as the first step is taken in any of these flows. - The device name (chosen on initial setup) is now shown in the settings panel - At the end of a light import, we hand off to the normal device link screen, starting at the QR code. On a full import, we remove the sensitive encryption information in the export to prevent conflicts on multiple imports. - `Whisper.Backup.exportToDirectory()` takes an options object so you can tell it to do a light export. - `Whisper.Backup.importFromDirectory()` takes an options object so you can force it to load only the light components found on disk. It also returns an object so you can tell whether a given import was a full import or light import. - On start of import, we build a list of all the ids present in the messages, conversations, and groups stores in IndexedDB. This can take some time if a lot of data is in the database already, but it makes the subsequent deduplicated import very fast. - Disappearing messages are now excluded when exporting - Remove some TODOs in the tests
2018-02-22 18:40:32 +00:00
"loadDataDescription": {
"message": "You've just gone through the export process, and your contacts and messages are waiting patiently on your computer. Select the folder that contains your saved Signal data.",
"description": "Introduction to the process of importing messages and contacts from disk"
},
"importChooserTitle": {
"message": "Choose directory with exported data",
"description": "Title of the popup window used to select data previously exported"
},
New design for import/install, 'light' import (#2053) - A new design for the import flow. It features: - Icons at the top of every screen - Gray background, blue buttons, thinner text - Simpler copy - A new design for the install flow. It features: - Immediate entry into the QR code screen - Animated dots to show that we're loading the QR code from the server - Fewer screens: 1) QR 2) device name 3) sync-in-progress - When not set up, the app opens directly into the install screen, which has been streamlined. The `--import` command-line argument will cause the app to open directly into the import flow. - Support for two different flavors of builds - the normal build will open into the standard registration flow, and the import flavor will be exactly the same except during setup it will open directly into the import flow. - A new design for the (dev-only) standalone registration view - When these install sequences are active, the OS File menu has entries to allow you to switch the method of setup you'd like to use. These go away as soon as the first step is taken in any of these flows. - The device name (chosen on initial setup) is now shown in the settings panel - At the end of a light import, we hand off to the normal device link screen, starting at the QR code. On a full import, we remove the sensitive encryption information in the export to prevent conflicts on multiple imports. - `Whisper.Backup.exportToDirectory()` takes an options object so you can tell it to do a light export. - `Whisper.Backup.importFromDirectory()` takes an options object so you can force it to load only the light components found on disk. It also returns an object so you can tell whether a given import was a full import or light import. - On start of import, we build a list of all the ids present in the messages, conversations, and groups stores in IndexedDB. This can take some time if a lot of data is in the database already, but it makes the subsequent deduplicated import very fast. - Disappearing messages are now excluded when exporting - Remove some TODOs in the tests
2018-02-22 18:40:32 +00:00
"importErrorHeader": {
"message": "Something went wrong!",
"description": "Header of the error screen after a failed import"
},
"importingHeader": {
"message": "Loading contacts and messages",
"description": "Header of screen shown as data is import"
},
"importError": {
New design for import/install, 'light' import (#2053) - A new design for the import flow. It features: - Icons at the top of every screen - Gray background, blue buttons, thinner text - Simpler copy - A new design for the install flow. It features: - Immediate entry into the QR code screen - Animated dots to show that we're loading the QR code from the server - Fewer screens: 1) QR 2) device name 3) sync-in-progress - When not set up, the app opens directly into the install screen, which has been streamlined. The `--import` command-line argument will cause the app to open directly into the import flow. - Support for two different flavors of builds - the normal build will open into the standard registration flow, and the import flavor will be exactly the same except during setup it will open directly into the import flow. - A new design for the (dev-only) standalone registration view - When these install sequences are active, the OS File menu has entries to allow you to switch the method of setup you'd like to use. These go away as soon as the first step is taken in any of these flows. - The device name (chosen on initial setup) is now shown in the settings panel - At the end of a light import, we hand off to the normal device link screen, starting at the QR code. On a full import, we remove the sensitive encryption information in the export to prevent conflicts on multiple imports. - `Whisper.Backup.exportToDirectory()` takes an options object so you can tell it to do a light export. - `Whisper.Backup.importFromDirectory()` takes an options object so you can force it to load only the light components found on disk. It also returns an object so you can tell whether a given import was a full import or light import. - On start of import, we build a list of all the ids present in the messages, conversations, and groups stores in IndexedDB. This can take some time if a lot of data is in the database already, but it makes the subsequent deduplicated import very fast. - Disappearing messages are now excluded when exporting - Remove some TODOs in the tests
2018-02-22 18:40:32 +00:00
"message": "Make sure you have chosen the correct directory that contains your saved Signal data. Its name should begin with 'Signal Export.' You can also save a new copy of your data from the Chrome App.<p>If these steps don't work for you, please <a target='_blank' href='https://support.signal.org/hc/en-us/articles/215188737'>submit a debug log</a> so that we can help you get migrated!</p>",
"description": "Message shown if the import went wrong."
},
New design for import/install, 'light' import (#2053) - A new design for the import flow. It features: - Icons at the top of every screen - Gray background, blue buttons, thinner text - Simpler copy - A new design for the install flow. It features: - Immediate entry into the QR code screen - Animated dots to show that we're loading the QR code from the server - Fewer screens: 1) QR 2) device name 3) sync-in-progress - When not set up, the app opens directly into the install screen, which has been streamlined. The `--import` command-line argument will cause the app to open directly into the import flow. - Support for two different flavors of builds - the normal build will open into the standard registration flow, and the import flavor will be exactly the same except during setup it will open directly into the import flow. - A new design for the (dev-only) standalone registration view - When these install sequences are active, the OS File menu has entries to allow you to switch the method of setup you'd like to use. These go away as soon as the first step is taken in any of these flows. - The device name (chosen on initial setup) is now shown in the settings panel - At the end of a light import, we hand off to the normal device link screen, starting at the QR code. On a full import, we remove the sensitive encryption information in the export to prevent conflicts on multiple imports. - `Whisper.Backup.exportToDirectory()` takes an options object so you can tell it to do a light export. - `Whisper.Backup.importFromDirectory()` takes an options object so you can force it to load only the light components found on disk. It also returns an object so you can tell whether a given import was a full import or light import. - On start of import, we build a list of all the ids present in the messages, conversations, and groups stores in IndexedDB. This can take some time if a lot of data is in the database already, but it makes the subsequent deduplicated import very fast. - Disappearing messages are now excluded when exporting - Remove some TODOs in the tests
2018-02-22 18:40:32 +00:00
"importAgain": {
"message": "Choose folder and try again",
"description": "Button shown if the user runs into an error during import, allowing them to start over"
},
New design for import/install, 'light' import (#2053) - A new design for the import flow. It features: - Icons at the top of every screen - Gray background, blue buttons, thinner text - Simpler copy - A new design for the install flow. It features: - Immediate entry into the QR code screen - Animated dots to show that we're loading the QR code from the server - Fewer screens: 1) QR 2) device name 3) sync-in-progress - When not set up, the app opens directly into the install screen, which has been streamlined. The `--import` command-line argument will cause the app to open directly into the import flow. - Support for two different flavors of builds - the normal build will open into the standard registration flow, and the import flavor will be exactly the same except during setup it will open directly into the import flow. - A new design for the (dev-only) standalone registration view - When these install sequences are active, the OS File menu has entries to allow you to switch the method of setup you'd like to use. These go away as soon as the first step is taken in any of these flows. - The device name (chosen on initial setup) is now shown in the settings panel - At the end of a light import, we hand off to the normal device link screen, starting at the QR code. On a full import, we remove the sensitive encryption information in the export to prevent conflicts on multiple imports. - `Whisper.Backup.exportToDirectory()` takes an options object so you can tell it to do a light export. - `Whisper.Backup.importFromDirectory()` takes an options object so you can force it to load only the light components found on disk. It also returns an object so you can tell whether a given import was a full import or light import. - On start of import, we build a list of all the ids present in the messages, conversations, and groups stores in IndexedDB. This can take some time if a lot of data is in the database already, but it makes the subsequent deduplicated import very fast. - Disappearing messages are now excluded when exporting - Remove some TODOs in the tests
2018-02-22 18:40:32 +00:00
"importCompleteHeader": {
"message": "Success!",
"description": "Header shown on the screen at the end of a successful import process"
},
New design for import/install, 'light' import (#2053) - A new design for the import flow. It features: - Icons at the top of every screen - Gray background, blue buttons, thinner text - Simpler copy - A new design for the install flow. It features: - Immediate entry into the QR code screen - Animated dots to show that we're loading the QR code from the server - Fewer screens: 1) QR 2) device name 3) sync-in-progress - When not set up, the app opens directly into the install screen, which has been streamlined. The `--import` command-line argument will cause the app to open directly into the import flow. - Support for two different flavors of builds - the normal build will open into the standard registration flow, and the import flavor will be exactly the same except during setup it will open directly into the import flow. - A new design for the (dev-only) standalone registration view - When these install sequences are active, the OS File menu has entries to allow you to switch the method of setup you'd like to use. These go away as soon as the first step is taken in any of these flows. - The device name (chosen on initial setup) is now shown in the settings panel - At the end of a light import, we hand off to the normal device link screen, starting at the QR code. On a full import, we remove the sensitive encryption information in the export to prevent conflicts on multiple imports. - `Whisper.Backup.exportToDirectory()` takes an options object so you can tell it to do a light export. - `Whisper.Backup.importFromDirectory()` takes an options object so you can force it to load only the light components found on disk. It also returns an object so you can tell whether a given import was a full import or light import. - On start of import, we build a list of all the ids present in the messages, conversations, and groups stores in IndexedDB. This can take some time if a lot of data is in the database already, but it makes the subsequent deduplicated import very fast. - Disappearing messages are now excluded when exporting - Remove some TODOs in the tests
2018-02-22 18:40:32 +00:00
"importCompleteStartButton": {
"message": "Start using Signal Desktop",
"description": "Button shown at end of successful import process, nothing left but a restart"
},
New design for import/install, 'light' import (#2053) - A new design for the import flow. It features: - Icons at the top of every screen - Gray background, blue buttons, thinner text - Simpler copy - A new design for the install flow. It features: - Immediate entry into the QR code screen - Animated dots to show that we're loading the QR code from the server - Fewer screens: 1) QR 2) device name 3) sync-in-progress - When not set up, the app opens directly into the install screen, which has been streamlined. The `--import` command-line argument will cause the app to open directly into the import flow. - Support for two different flavors of builds - the normal build will open into the standard registration flow, and the import flavor will be exactly the same except during setup it will open directly into the import flow. - A new design for the (dev-only) standalone registration view - When these install sequences are active, the OS File menu has entries to allow you to switch the method of setup you'd like to use. These go away as soon as the first step is taken in any of these flows. - The device name (chosen on initial setup) is now shown in the settings panel - At the end of a light import, we hand off to the normal device link screen, starting at the QR code. On a full import, we remove the sensitive encryption information in the export to prevent conflicts on multiple imports. - `Whisper.Backup.exportToDirectory()` takes an options object so you can tell it to do a light export. - `Whisper.Backup.importFromDirectory()` takes an options object so you can force it to load only the light components found on disk. It also returns an object so you can tell whether a given import was a full import or light import. - On start of import, we build a list of all the ids present in the messages, conversations, and groups stores in IndexedDB. This can take some time if a lot of data is in the database already, but it makes the subsequent deduplicated import very fast. - Disappearing messages are now excluded when exporting - Remove some TODOs in the tests
2018-02-22 18:40:32 +00:00
"importCompleteLinkButton": {
"message": "Link this device to your phone",
"description": "Button shown at end of successful 'light' import process, so the standard linking process still needs to happen"
},
Full export, migration banner, and full migration workflow - behind flag (#1342) * Add support for backup and restore This first pass works for all stores except messages, pending some scaling improvements. // FREEBIE * Import of messages and attachments Properly sanitize filenames. Logging information that will help with debugging but won't threaten privacy (no contact or group names), where the on-disk directories have this information to make things human-readable FREEBIE * First fully operational single-action export and import! FREEBIE * Add migration export flow A banner alert leads to a blocking ui for the migration. We close the socket and wait for incoming messages to drain before starting the export. FREEBIE * A number of updates for the export flow 1. We don't immediately pop the directory selection dialog box, instead showing an explicit 'choose directory' button after explaining what is about to happen 2. We show a 'submit debug log' button on most steps of the process 3. We handle export errors and encourage the user to double-check their filesystem then submit their log 4. We are resilient to restarts during the process 5. We handle the user cancelling out of the directory selection dialog differently from other errors. 6. The export process is now serialized: non-messages, then messages. 7. After successful export, show where the data is on disk FREEBUE * Put migration behind a flag FREEBIE * Shut down websocket before proceeding with export FREEBIE * Add MigrationView to test/index.html to fix test FREEBIE * Remove 'Submit Debug Log' button when the export process is complete FREEBIE * Create a 'Signal Export' directory below user-chosen dir This cleans things up a bit so we don't litter the user's target directory with lots of stuff. FREEBIE * Clarify MessageReceiver.drain() method comments FREEBIE * A couple updates for clarity - event names, else handling Also the removal of wait(), which wasn't used anywhere. FREEBIE * A number of wording updates for the export flow FREEBIE * Export complete: put dir on its own line, make text selectable FREEBIE
2017-08-28 20:06:10 +00:00
"selectedLocation": {
"message": "your selected location",
"description": "Message shown as the export location if we didn't capture the target directory"
},
"upgradingDatabase": {
"message": "Upgrading database. This may take some time...",
"description": "Message shown on the loading screen when we're changing database structure on first run of a new version"
},
"loadingMessages": {
"message": "Loading messages. $count$ so far...",
"description": "Message shown on the loading screen when we're catching up on the backlog of messages",
"placeholders": {
"count": {
"content": "$1",
"example": "5"
}
}
},
"me": {
"message": "Me",
"description": "The label for yourself when shown in a group member list"
},
"view": {
"message": "View",
"description": "Used as a label on a button allowing user to see more information"
},
"youLeftTheGroup": {
"message": "You left the group",
"description": "Displayed when a user can't send a message because they have left the group"
},
"scrollDown": {
"message": "Scroll to bottom of conversation",
"description": "Alt text for button to take user down to bottom of conversation, shown when user scrolls up"
},
"messageBelow": {
"message": "New message below",
"description": "Alt text for button to take user down to bottom of conversation with a new message out of screen"
},
"messagesBelow": {
"message": "New messages below",
"description": "Alt text for button to take user down to bottom of conversation with more than one message out of screen"
},
"unreadMessage": {
"message": "1 Unread Message",
"description": "Text for unread message separator, just one message"
},
"unreadMessages": {
"message": "$count$ Unread Messages",
"description": "Text for unread message separator, with count",
"placeholders": {
"count": {
"content": "$1",
"example": "5"
}
}
},
"youMarkedAsVerified": {
"message": "You marked your safety number with $name$ as verified.",
"description": "Shown in the conversation history when the user marks a contact as verified.",
"placeholders": {
"name": {
"content": "$1",
"example": "Bob"
}
}
},
"youMarkedAsNotVerified": {
"message": "You marked your safety number with $name$ as unverified.",
"description": "Shown in the conversation history when the user marks a contact as not verified, whether on the safety number screen or by dismissing a banner or dialog.",
"placeholders": {
"name": {
"content": "$1",
"example": "Bob"
}
}
},
"youMarkedAsVerifiedOtherDevice": {
"message": "You marked your safety number with $name$ as verified from another device.",
"description": "Shown in the conversation history when we discover that the user marked a contact as verified on another device.",
"placeholders": {
"name": {
"content": "$1",
"example": "Bob"
}
}
},
"youMarkedAsNotVerifiedOtherDevice": {
"message": "You marked your safety number with $name$ as not verified from another device.",
"description": "Shown in the conversation history when we discover that the user marked a contact as not verified on another device.",
"placeholders": {
"name": {
"content": "$1",
"example": "Bob"
}
}
},
"membersNeedingVerification": {
"message": "Your safety numbers with these group members have changed since you last verified. Click a group member to see your new safety number with them.",
"description": "When there are multiple previously-verified group members with safety number changes, a banner will be shown. The list of contacts with safety number changes is shown, and this text introduces that list."
},
"changedSinceVerifiedMultiple": {
"message": "Your safety numbers with multiple group members have changed since you last verified. This could mean that someone is trying to intercept your communication or that they have simply reinstalled Signal.",
"description": "Shown on confirmation dialog when user attempts to send a message"
},
"changedSinceVerified": {
"message": "Your safety number with $name$ has changed since you last verified. This could mean that someone is trying to intercept your communication or that $name$ has simply reinstalled Signal.",
"description": "Shown on confirmation dialog when user attempts to send a message",
"placeholders": {
"name": {
"content": "$1",
"example": "Bob"
}
}
},
"changedRightAfterVerify": {
"message": "The safety number you are trying to verify has changed. Please review your new safety number with $name$. Remember, this change could mean that someone is trying to intercept your communication or that $name$ has simply reinstalled Signal.",
"description": "Shown on the safety number screen when the user has selected to verify/unverify a contact's safety number, and we immediately discover a safety number change",
"placeholders": {
"name": {
"content": "$1",
"example": "Bob"
}
}
},
"changedRecentlyMultiple": {
"message": "Your safety numbers with multiple group members have changed recently. This could mean that someone is trying to intercept your communication or that they have simply reinstalled Signal.",
"description": "Shown on confirmation dialog when user attempts to send a message"
},
"changedRecently": {
"message": "Your safety number with $name$ has changed recently. This could mean that someone is trying to intercept your communication or that $name$ has simply reinstalled Signal.",
"description": "Shown on confirmation dialog when user attempts to send a message",
"placeholders": {
"name": {
"content": "$1",
"example": "Bob"
}
}
},
"identityKeyErrorOnSend": {
"message": "Your safety number with $name$ has changed. This could either mean that someone is trying to intercept your communication or that $name$ has simply reinstalled Signal. You may wish to verify your saftey number with this contact.",
"description": "Shown when user clicks on a failed recipient in the message detail view after an identity key change",
"placeholders": {
"name": {
"content": "$1",
"example": "Bob"
}
}
},
"sendAnyway": {
"message": "Send Anyway",
"description": "Used on a warning dialog to make it clear that it might be risky to send the message."
},
"noLongerVerified": {
"message": "Your safety number with $name$ has changed and is no longer verified. Click to show.",
"description": "Shown in converation banner when user's safety number has changed, but they were previously verified.",
"placeholders": {
"name": {
"content": "$1",
"example": "Bob"
}
}
},
"multipleNoLongerVerified": {
"message": "Your safety numbers with multiple members of this group have changed and are no longer verified. Click to show.",
"description": "Shown in conversation banner when more than one group member's safety number has changed, but they were previously verified."
},
2015-12-26 07:01:22 +00:00
"debugLogExplanation": {
"message": "This log will be posted publicly online for contributors to view. You may examine and edit it before submitting."
},
"reportIssue": {
"message": "Report an issue",
"description": "Link to open the issue tracker"
},
2015-12-26 07:01:22 +00:00
"gotIt": {
2016-03-03 12:08:01 +00:00
"message": "Got it!",
"description": "Label for a button that dismisses a dialog. The user clicks it to confirm that they understand the message in the dialog."
2015-12-26 07:01:22 +00:00
},
"submit": {
"message": "Submit"
},
2015-12-26 06:47:09 +00:00
"verifyContact": {
"message": "You may wish to $tag_start$ verify $tag_end$ your safety number with this contact.",
"description": "Use $tag_start$ and $tag_end$ to wrap the word or phrase in this sentence that the user should click on in order to navigate to the verification screen. These placeholders will be replaced with appropriate HTML code.",
"placeholders": {
"tag_start": {
"content": "<a class='verify' href='#'>"
},
"tag_end": {
"content": "</a>"
}
}
2015-12-26 06:47:09 +00:00
},
"acceptNewKey": {
"message": "Accept",
"description": "Label for a button to accept a new safety number"
2015-12-26 06:47:09 +00:00
},
"verify": {
"message": "Mark as verified"
},
"unverify": {
"message": "Mark as not verified"
},
"isVerified": {
"message": "You have verified your safety number with $name$.",
"description": "Summary state shown at top of the safety number screen if user has verified contact.",
"placeholders": {
"name": {
"content": "$1",
"example": "Bob"
}
}
},
"isNotVerified": {
"message": "You have not verified your safety number with $name$.",
"description": "Summary state shown at top of the safety number screen if user has not verified contact.",
"placeholders": {
"name": {
"content": "$1",
"example": "Bob"
}
}
},
"verified": {
"message": "Verified"
},
"newIdentity": {
"message": "New safety number",
"description": "Header for a key change dialog"
},
"identityChanged": {
"message": "Your safety number with this contact has changed. This could either mean that someone is trying to intercept your communication, or this contact simply reinstalled Signal. You may wish to verify the new safety number below."
},
"incomingError": {
"message": "Error handling incoming message."
},
2015-12-26 05:12:17 +00:00
"unsupportedAttachment": {
"message": "Unsupported attachment type. Click to save.",
"description": "Displayed for incoming unsupported attachment"
},
"clickToSave": {
"message": "Click to save",
"description": "Hover text for attachment filenames"
},
"unnamedFile": {
"message": "Unnamed File",
"description": "Hover text for attachment filenames"
},
"voiceMessage": {
"message": "Voice Message",
"description": "Name for a voice message attachment"
},
"unsupportedFileType": {
2015-12-26 05:12:17 +00:00
"message": "Unsupported file type",
"description": "Displayed for outgoing unsupported attachment"
},
2015-12-26 04:38:16 +00:00
"fileSizeWarning": {
"message": "Sorry, the selected file exceeds message size restrictions."
},
2015-12-26 02:16:38 +00:00
"disconnected": {
"message": "Disconnected",
"description": "Displayed when the desktop client cannot connect to the server."
2015-12-26 02:16:38 +00:00
},
"connecting": {
"message": "Connecting",
"description": "Displayed when the desktop client is currently connecting to the server."
},
"offline": {
"message": "Offline",
"description": "Displayed when the desktop client has no network connection."
},
"checkNetworkConnection": {
"message": "Check your network connection.",
"description": "Obvious instructions for when a user's computer loses its network connection"
},
"attemptingReconnection": {
"message": "Attempting reconnect in $reconnect_duration_in_seconds$ seconds",
"placeholders": {
"reconnect_duration_in_seconds": {
"content": "$1",
"example": "10"
}
}
},
2015-12-26 02:15:04 +00:00
"submitDebugLog": {
"message": "Debug log",
"description": "Menu item and header text for debug log modal (sentence case)"
2015-12-26 02:15:04 +00:00
},
"debugLog": {
"message": "Debug Log",
UX Improvements: Global Menu & Copy Changes (#2078) - [x] Removed ‘Restart Signal’ global menu item - [x] Change _Click to create contact…_ to _Start conversation…_ - [x] Move global menu (top-left kebab) into OS menu bar, i.e. **Settings** > **Preferences…** - [x] Add tests for OS menu bar templates - [x] Fix bug with **Window** menu on macOS when showing setup options - [x] Use _Title Case_ for all OS menu bar menu items for consistency commit dedf7c9af0de90980388559659df0d92a77b864c Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:53:42 2018 -0500 Use ‘Title Case’ to be consistent with OS menus References: - Apple: - https://developer.apple.com/macos/human-interface-guidelines/menus/menu-anatomy/#menu-and-menu-item-titles - https://developer.apple.com/library/content/documentation/FinalCutProX/Conceptual/FxPlugHIG/TextStyleGuidelines/TextStyleGuidelines.html#//apple_ref/doc/uid/TP40013782-CH6-SW1 - https://titlecaseconverter.com/ commit 3286da29b334bd4526c587b17707c2f230cec8f5 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:36:50 2018 -0500 Fix bug for macOS ‘Window’ menu with setup options commit 236a23d1eafe2a16073394a27b9013298b682a25 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:27:46 2018 -0500 Test menus with included setup options commit c5d5f5abb8d7f52d6a4aa182a86c92f7ddceade0 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:10:27 2018 -0500 Move settings (‘Preferences’) into OS-level menu This reduces our reliance on custom UI until we have more design resources. commit 027803f8f4983cffa443f0beff1854dcf541689b Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:02:56 2018 -0500 Prepare tests for menu with/without included setup commit 9e2f006924b85eb249a8a1261c1c4dd1a706afa6 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 15:55:46 2018 -0500 Destructure `includeSetup` commit 6b2a1eccdf724fd722e58415d2700da73942d9e8 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 15:55:14 2018 -0500 :abc: `createTemplate` `options` commit c2fecba34b153fed106f414ed3347d46299f6fe5 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:49:55 2018 -0500 Test menu for Windows and Linux commit 60281b1af9ad1f022cdbc40711ebd0b688a7355d Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:40:39 2018 -0500 Add `yarn run test-app` command commit 1a0489919c0a97b03fe88196260fef894fb3d9e4 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:40:29 2018 -0500 Add test for `SignalMenu.createTemplate` on macOS commit 9638b86c0f00f231e44562a5aa01626f0e5fdd8b Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:34:46 2018 -0500 Make `createTemplate` pure Extracting `options.platform` makes it easier to test without having to stub `process.platform`. commit 9c26404892d7c9a7bd0199a9e8367a165a3b365c Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:47:39 2018 -0500 Extract `locale.load` `appLocale` & `logger` for testability This allows us to run this code in a non-Electron environment, e.g. Node.js Mocha test suite. commit 710b22438df25c8d5e8431845a035c55ec8fc0b7 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:46:13 2018 -0500 :abc: npm scripts commit 9ae22937fbce078f91443023b560b3c0468c1380 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:45:30 2018 -0500 Use 2-space indendation for `app` module tests commit 22c26baf6159bd2e1f5a787c10e2260f09395329 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:22:55 2018 -0500 Prefer named exports commit 9c9526195266ac77ac2ca04135a1e675f617dfd2 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:22:46 2018 -0500 :abc: Organize `require`s commit 2f144d24d9e9a9ef72fe418996e3c911b304b00a Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:13:50 2018 -0500 Remove existing global hamburger menu This will be replaced by a OS-level ‘Preferences’ menu. commit f5adb374cb742e5f319ececda8ab6d8adee88d7e Author: Daniel Gasienica <daniel@gasienica.ch> Date: Mon Feb 26 18:40:54 2018 -0500 Remove ‘Restart Signal’ menu from settings Apparently, this is a remnant from the Chrome web application. commit d7a206bc8e67ef44022085e804ca040ed1b219f7 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Mon Feb 26 17:16:49 2018 -0500 Clarify label for starting a new conversation When user a enters a number that is not a contact, we prompt them to start a new conversation. commit 715a4064367fb61d85c1a4f9d48261b2ce002435 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Mon Feb 26 16:46:26 2018 -0500 Use ‘Enter name or number’ as prompt’ This follows implementation of Android and recommendation from Alissa.
2018-03-02 20:59:39 +00:00
"description": "View menu item to open the debug log (title case)"
},
"goToReleaseNotes": {
UX Improvements: Global Menu & Copy Changes (#2078) - [x] Removed ‘Restart Signal’ global menu item - [x] Change _Click to create contact…_ to _Start conversation…_ - [x] Move global menu (top-left kebab) into OS menu bar, i.e. **Settings** > **Preferences…** - [x] Add tests for OS menu bar templates - [x] Fix bug with **Window** menu on macOS when showing setup options - [x] Use _Title Case_ for all OS menu bar menu items for consistency commit dedf7c9af0de90980388559659df0d92a77b864c Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:53:42 2018 -0500 Use ‘Title Case’ to be consistent with OS menus References: - Apple: - https://developer.apple.com/macos/human-interface-guidelines/menus/menu-anatomy/#menu-and-menu-item-titles - https://developer.apple.com/library/content/documentation/FinalCutProX/Conceptual/FxPlugHIG/TextStyleGuidelines/TextStyleGuidelines.html#//apple_ref/doc/uid/TP40013782-CH6-SW1 - https://titlecaseconverter.com/ commit 3286da29b334bd4526c587b17707c2f230cec8f5 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:36:50 2018 -0500 Fix bug for macOS ‘Window’ menu with setup options commit 236a23d1eafe2a16073394a27b9013298b682a25 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:27:46 2018 -0500 Test menus with included setup options commit c5d5f5abb8d7f52d6a4aa182a86c92f7ddceade0 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:10:27 2018 -0500 Move settings (‘Preferences’) into OS-level menu This reduces our reliance on custom UI until we have more design resources. commit 027803f8f4983cffa443f0beff1854dcf541689b Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:02:56 2018 -0500 Prepare tests for menu with/without included setup commit 9e2f006924b85eb249a8a1261c1c4dd1a706afa6 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 15:55:46 2018 -0500 Destructure `includeSetup` commit 6b2a1eccdf724fd722e58415d2700da73942d9e8 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 15:55:14 2018 -0500 :abc: `createTemplate` `options` commit c2fecba34b153fed106f414ed3347d46299f6fe5 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:49:55 2018 -0500 Test menu for Windows and Linux commit 60281b1af9ad1f022cdbc40711ebd0b688a7355d Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:40:39 2018 -0500 Add `yarn run test-app` command commit 1a0489919c0a97b03fe88196260fef894fb3d9e4 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:40:29 2018 -0500 Add test for `SignalMenu.createTemplate` on macOS commit 9638b86c0f00f231e44562a5aa01626f0e5fdd8b Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:34:46 2018 -0500 Make `createTemplate` pure Extracting `options.platform` makes it easier to test without having to stub `process.platform`. commit 9c26404892d7c9a7bd0199a9e8367a165a3b365c Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:47:39 2018 -0500 Extract `locale.load` `appLocale` & `logger` for testability This allows us to run this code in a non-Electron environment, e.g. Node.js Mocha test suite. commit 710b22438df25c8d5e8431845a035c55ec8fc0b7 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:46:13 2018 -0500 :abc: npm scripts commit 9ae22937fbce078f91443023b560b3c0468c1380 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:45:30 2018 -0500 Use 2-space indendation for `app` module tests commit 22c26baf6159bd2e1f5a787c10e2260f09395329 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:22:55 2018 -0500 Prefer named exports commit 9c9526195266ac77ac2ca04135a1e675f617dfd2 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:22:46 2018 -0500 :abc: Organize `require`s commit 2f144d24d9e9a9ef72fe418996e3c911b304b00a Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:13:50 2018 -0500 Remove existing global hamburger menu This will be replaced by a OS-level ‘Preferences’ menu. commit f5adb374cb742e5f319ececda8ab6d8adee88d7e Author: Daniel Gasienica <daniel@gasienica.ch> Date: Mon Feb 26 18:40:54 2018 -0500 Remove ‘Restart Signal’ menu from settings Apparently, this is a remnant from the Chrome web application. commit d7a206bc8e67ef44022085e804ca040ed1b219f7 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Mon Feb 26 17:16:49 2018 -0500 Clarify label for starting a new conversation When user a enters a number that is not a contact, we prompt them to start a new conversation. commit 715a4064367fb61d85c1a4f9d48261b2ce002435 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Mon Feb 26 16:46:26 2018 -0500 Use ‘Enter name or number’ as prompt’ This follows implementation of Android and recommendation from Alissa.
2018-03-02 20:59:39 +00:00
"message": "Go to Release Notes",
"description": ""
},
"goToForums": {
UX Improvements: Global Menu & Copy Changes (#2078) - [x] Removed ‘Restart Signal’ global menu item - [x] Change _Click to create contact…_ to _Start conversation…_ - [x] Move global menu (top-left kebab) into OS menu bar, i.e. **Settings** > **Preferences…** - [x] Add tests for OS menu bar templates - [x] Fix bug with **Window** menu on macOS when showing setup options - [x] Use _Title Case_ for all OS menu bar menu items for consistency commit dedf7c9af0de90980388559659df0d92a77b864c Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:53:42 2018 -0500 Use ‘Title Case’ to be consistent with OS menus References: - Apple: - https://developer.apple.com/macos/human-interface-guidelines/menus/menu-anatomy/#menu-and-menu-item-titles - https://developer.apple.com/library/content/documentation/FinalCutProX/Conceptual/FxPlugHIG/TextStyleGuidelines/TextStyleGuidelines.html#//apple_ref/doc/uid/TP40013782-CH6-SW1 - https://titlecaseconverter.com/ commit 3286da29b334bd4526c587b17707c2f230cec8f5 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:36:50 2018 -0500 Fix bug for macOS ‘Window’ menu with setup options commit 236a23d1eafe2a16073394a27b9013298b682a25 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:27:46 2018 -0500 Test menus with included setup options commit c5d5f5abb8d7f52d6a4aa182a86c92f7ddceade0 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:10:27 2018 -0500 Move settings (‘Preferences’) into OS-level menu This reduces our reliance on custom UI until we have more design resources. commit 027803f8f4983cffa443f0beff1854dcf541689b Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:02:56 2018 -0500 Prepare tests for menu with/without included setup commit 9e2f006924b85eb249a8a1261c1c4dd1a706afa6 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 15:55:46 2018 -0500 Destructure `includeSetup` commit 6b2a1eccdf724fd722e58415d2700da73942d9e8 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 15:55:14 2018 -0500 :abc: `createTemplate` `options` commit c2fecba34b153fed106f414ed3347d46299f6fe5 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:49:55 2018 -0500 Test menu for Windows and Linux commit 60281b1af9ad1f022cdbc40711ebd0b688a7355d Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:40:39 2018 -0500 Add `yarn run test-app` command commit 1a0489919c0a97b03fe88196260fef894fb3d9e4 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:40:29 2018 -0500 Add test for `SignalMenu.createTemplate` on macOS commit 9638b86c0f00f231e44562a5aa01626f0e5fdd8b Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:34:46 2018 -0500 Make `createTemplate` pure Extracting `options.platform` makes it easier to test without having to stub `process.platform`. commit 9c26404892d7c9a7bd0199a9e8367a165a3b365c Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:47:39 2018 -0500 Extract `locale.load` `appLocale` & `logger` for testability This allows us to run this code in a non-Electron environment, e.g. Node.js Mocha test suite. commit 710b22438df25c8d5e8431845a035c55ec8fc0b7 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:46:13 2018 -0500 :abc: npm scripts commit 9ae22937fbce078f91443023b560b3c0468c1380 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:45:30 2018 -0500 Use 2-space indendation for `app` module tests commit 22c26baf6159bd2e1f5a787c10e2260f09395329 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:22:55 2018 -0500 Prefer named exports commit 9c9526195266ac77ac2ca04135a1e675f617dfd2 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:22:46 2018 -0500 :abc: Organize `require`s commit 2f144d24d9e9a9ef72fe418996e3c911b304b00a Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:13:50 2018 -0500 Remove existing global hamburger menu This will be replaced by a OS-level ‘Preferences’ menu. commit f5adb374cb742e5f319ececda8ab6d8adee88d7e Author: Daniel Gasienica <daniel@gasienica.ch> Date: Mon Feb 26 18:40:54 2018 -0500 Remove ‘Restart Signal’ menu from settings Apparently, this is a remnant from the Chrome web application. commit d7a206bc8e67ef44022085e804ca040ed1b219f7 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Mon Feb 26 17:16:49 2018 -0500 Clarify label for starting a new conversation When user a enters a number that is not a contact, we prompt them to start a new conversation. commit 715a4064367fb61d85c1a4f9d48261b2ce002435 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Mon Feb 26 16:46:26 2018 -0500 Use ‘Enter name or number’ as prompt’ This follows implementation of Android and recommendation from Alissa.
2018-03-02 20:59:39 +00:00
"message": "Go to Forums",
"description": "Item under the Help menu, takes you to the forums"
},
"goToSupportPage": {
UX Improvements: Global Menu & Copy Changes (#2078) - [x] Removed ‘Restart Signal’ global menu item - [x] Change _Click to create contact…_ to _Start conversation…_ - [x] Move global menu (top-left kebab) into OS menu bar, i.e. **Settings** > **Preferences…** - [x] Add tests for OS menu bar templates - [x] Fix bug with **Window** menu on macOS when showing setup options - [x] Use _Title Case_ for all OS menu bar menu items for consistency commit dedf7c9af0de90980388559659df0d92a77b864c Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:53:42 2018 -0500 Use ‘Title Case’ to be consistent with OS menus References: - Apple: - https://developer.apple.com/macos/human-interface-guidelines/menus/menu-anatomy/#menu-and-menu-item-titles - https://developer.apple.com/library/content/documentation/FinalCutProX/Conceptual/FxPlugHIG/TextStyleGuidelines/TextStyleGuidelines.html#//apple_ref/doc/uid/TP40013782-CH6-SW1 - https://titlecaseconverter.com/ commit 3286da29b334bd4526c587b17707c2f230cec8f5 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:36:50 2018 -0500 Fix bug for macOS ‘Window’ menu with setup options commit 236a23d1eafe2a16073394a27b9013298b682a25 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:27:46 2018 -0500 Test menus with included setup options commit c5d5f5abb8d7f52d6a4aa182a86c92f7ddceade0 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:10:27 2018 -0500 Move settings (‘Preferences’) into OS-level menu This reduces our reliance on custom UI until we have more design resources. commit 027803f8f4983cffa443f0beff1854dcf541689b Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:02:56 2018 -0500 Prepare tests for menu with/without included setup commit 9e2f006924b85eb249a8a1261c1c4dd1a706afa6 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 15:55:46 2018 -0500 Destructure `includeSetup` commit 6b2a1eccdf724fd722e58415d2700da73942d9e8 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 15:55:14 2018 -0500 :abc: `createTemplate` `options` commit c2fecba34b153fed106f414ed3347d46299f6fe5 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:49:55 2018 -0500 Test menu for Windows and Linux commit 60281b1af9ad1f022cdbc40711ebd0b688a7355d Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:40:39 2018 -0500 Add `yarn run test-app` command commit 1a0489919c0a97b03fe88196260fef894fb3d9e4 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:40:29 2018 -0500 Add test for `SignalMenu.createTemplate` on macOS commit 9638b86c0f00f231e44562a5aa01626f0e5fdd8b Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:34:46 2018 -0500 Make `createTemplate` pure Extracting `options.platform` makes it easier to test without having to stub `process.platform`. commit 9c26404892d7c9a7bd0199a9e8367a165a3b365c Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:47:39 2018 -0500 Extract `locale.load` `appLocale` & `logger` for testability This allows us to run this code in a non-Electron environment, e.g. Node.js Mocha test suite. commit 710b22438df25c8d5e8431845a035c55ec8fc0b7 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:46:13 2018 -0500 :abc: npm scripts commit 9ae22937fbce078f91443023b560b3c0468c1380 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:45:30 2018 -0500 Use 2-space indendation for `app` module tests commit 22c26baf6159bd2e1f5a787c10e2260f09395329 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:22:55 2018 -0500 Prefer named exports commit 9c9526195266ac77ac2ca04135a1e675f617dfd2 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:22:46 2018 -0500 :abc: Organize `require`s commit 2f144d24d9e9a9ef72fe418996e3c911b304b00a Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:13:50 2018 -0500 Remove existing global hamburger menu This will be replaced by a OS-level ‘Preferences’ menu. commit f5adb374cb742e5f319ececda8ab6d8adee88d7e Author: Daniel Gasienica <daniel@gasienica.ch> Date: Mon Feb 26 18:40:54 2018 -0500 Remove ‘Restart Signal’ menu from settings Apparently, this is a remnant from the Chrome web application. commit d7a206bc8e67ef44022085e804ca040ed1b219f7 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Mon Feb 26 17:16:49 2018 -0500 Clarify label for starting a new conversation When user a enters a number that is not a contact, we prompt them to start a new conversation. commit 715a4064367fb61d85c1a4f9d48261b2ce002435 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Mon Feb 26 16:46:26 2018 -0500 Use ‘Enter name or number’ as prompt’ This follows implementation of Android and recommendation from Alissa.
2018-03-02 20:59:39 +00:00
"message": "Go to Support Page",
"description": "Item under the Help menu, takes you to the support page"
},
"menuReportIssue": {
"message": "Report an Issue",
"description": "Item under the Help menu, takes you to GitHub new issue form (title case)"
},
"aboutSignalDesktop": {
"message": "About Signal Desktop",
"description": "Item under the Help menu, which opens a small about window"
},
"speech": {
"message": "Speech",
"description": "Item under the Edit menu, with 'start/stop speaking' items below it"
},
"show": {
"message": "Show",
"description": "Command under Window menu, to show the window"
},
"hide": {
"message": "Hide",
"description": "Command in the tray icon menu, to hide the window"
},
"quit": {
"message": "Quit",
"description": "Command in the tray icon menu, to quit the application"
},
"trayTooltip": {
"message": "Signal Desktop",
"description": "Tooltip for the tray icon"
},
2015-12-26 02:15:04 +00:00
"searchForPeopleOrGroups": {
UX Improvements: Global Menu & Copy Changes (#2078) - [x] Removed ‘Restart Signal’ global menu item - [x] Change _Click to create contact…_ to _Start conversation…_ - [x] Move global menu (top-left kebab) into OS menu bar, i.e. **Settings** > **Preferences…** - [x] Add tests for OS menu bar templates - [x] Fix bug with **Window** menu on macOS when showing setup options - [x] Use _Title Case_ for all OS menu bar menu items for consistency commit dedf7c9af0de90980388559659df0d92a77b864c Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:53:42 2018 -0500 Use ‘Title Case’ to be consistent with OS menus References: - Apple: - https://developer.apple.com/macos/human-interface-guidelines/menus/menu-anatomy/#menu-and-menu-item-titles - https://developer.apple.com/library/content/documentation/FinalCutProX/Conceptual/FxPlugHIG/TextStyleGuidelines/TextStyleGuidelines.html#//apple_ref/doc/uid/TP40013782-CH6-SW1 - https://titlecaseconverter.com/ commit 3286da29b334bd4526c587b17707c2f230cec8f5 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:36:50 2018 -0500 Fix bug for macOS ‘Window’ menu with setup options commit 236a23d1eafe2a16073394a27b9013298b682a25 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:27:46 2018 -0500 Test menus with included setup options commit c5d5f5abb8d7f52d6a4aa182a86c92f7ddceade0 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:10:27 2018 -0500 Move settings (‘Preferences’) into OS-level menu This reduces our reliance on custom UI until we have more design resources. commit 027803f8f4983cffa443f0beff1854dcf541689b Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:02:56 2018 -0500 Prepare tests for menu with/without included setup commit 9e2f006924b85eb249a8a1261c1c4dd1a706afa6 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 15:55:46 2018 -0500 Destructure `includeSetup` commit 6b2a1eccdf724fd722e58415d2700da73942d9e8 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 15:55:14 2018 -0500 :abc: `createTemplate` `options` commit c2fecba34b153fed106f414ed3347d46299f6fe5 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:49:55 2018 -0500 Test menu for Windows and Linux commit 60281b1af9ad1f022cdbc40711ebd0b688a7355d Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:40:39 2018 -0500 Add `yarn run test-app` command commit 1a0489919c0a97b03fe88196260fef894fb3d9e4 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:40:29 2018 -0500 Add test for `SignalMenu.createTemplate` on macOS commit 9638b86c0f00f231e44562a5aa01626f0e5fdd8b Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:34:46 2018 -0500 Make `createTemplate` pure Extracting `options.platform` makes it easier to test without having to stub `process.platform`. commit 9c26404892d7c9a7bd0199a9e8367a165a3b365c Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:47:39 2018 -0500 Extract `locale.load` `appLocale` & `logger` for testability This allows us to run this code in a non-Electron environment, e.g. Node.js Mocha test suite. commit 710b22438df25c8d5e8431845a035c55ec8fc0b7 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:46:13 2018 -0500 :abc: npm scripts commit 9ae22937fbce078f91443023b560b3c0468c1380 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:45:30 2018 -0500 Use 2-space indendation for `app` module tests commit 22c26baf6159bd2e1f5a787c10e2260f09395329 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:22:55 2018 -0500 Prefer named exports commit 9c9526195266ac77ac2ca04135a1e675f617dfd2 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:22:46 2018 -0500 :abc: Organize `require`s commit 2f144d24d9e9a9ef72fe418996e3c911b304b00a Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:13:50 2018 -0500 Remove existing global hamburger menu This will be replaced by a OS-level ‘Preferences’ menu. commit f5adb374cb742e5f319ececda8ab6d8adee88d7e Author: Daniel Gasienica <daniel@gasienica.ch> Date: Mon Feb 26 18:40:54 2018 -0500 Remove ‘Restart Signal’ menu from settings Apparently, this is a remnant from the Chrome web application. commit d7a206bc8e67ef44022085e804ca040ed1b219f7 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Mon Feb 26 17:16:49 2018 -0500 Clarify label for starting a new conversation When user a enters a number that is not a contact, we prompt them to start a new conversation. commit 715a4064367fb61d85c1a4f9d48261b2ce002435 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Mon Feb 26 16:46:26 2018 -0500 Use ‘Enter name or number’ as prompt’ This follows implementation of Android and recommendation from Alissa.
2018-03-02 20:59:39 +00:00
"message": "Enter name or number",
2015-12-26 02:15:04 +00:00
"description": "Placeholder text in the search input"
},
"welcomeToSignal": {
"message": "Welcome to Signal"
},
"selectAContact": {
"message": "Select a contact or group to start chatting."
},
"replyToMessage": {
"message": "Reply to Message",
"description": "Shown in triple-dot menu next to message to allow user to start crafting a message with a quotation"
},
2018-04-12 19:21:37 +00:00
"replyingToYourself": {
"message": "Replying to Yourself",
"description": "Shown in iOS theme when you quote yourself"
},
"replyingToYou": {
"message": "Replying to You",
"description": "Shown in iOS theme when someone else quotes a message from you"
},
"replyingTo": {
"message": "Replying to $name$",
2018-04-12 19:21:37 +00:00
"description": "Shown in iOS theme when you or someone quotes to a message which is not from you",
"placeholders": {
"name": {
"content": "$1",
"example": "John"
}
}
},
"audio": {
"message": "Audio",
"description": "Shown in a quotation of a message containing an audio attachment if no text was originally provided with that attachment"
},
"video": {
"message": "Video",
"description": "Shown in a quotation of a message containing a video if no text was originally provided with that video"
},
"photo": {
"message": "Photo",
"description": "Shown in a quotation of a message containing a photo if no text was originally provided with that image"
},
2015-12-26 00:52:04 +00:00
"ok": {
"message": "OK"
},
"cancel": {
"message": "Cancel"
},
2015-12-25 06:55:53 +00:00
"failedToSend": {
"message": "Failed to send to some recipients. Check your network connection."
2015-12-25 06:55:53 +00:00
},
"error": {
"message": "Error"
},
"resend": {
"message": "Resend"
},
"messageDetail": {
"message": "Message Detail"
},
2017-07-12 22:19:07 +00:00
"delete": {
"message": "Delete"
},
"deleteWarning": {
"message": "Are you sure? Clicking 'delete' will permanently remove this message from this device."
},
"deleteMessage": {
"message": "Delete this message"
},
"from": {
"message": "From",
"description": "Label for the sender of a message"
},
"to": {
"message": "To",
"description": "Label for the receiver of a message"
},
2015-12-25 06:55:53 +00:00
"sent": {
"message": "Sent",
"description": "Label for the time a message was sent"
},
"received": {
"message": "Received",
"description": "Label for the time a message was received"
},
2015-12-25 06:50:27 +00:00
"sendMessage": {
"message": "Send a message",
"description": "Placeholder text in the message entry field"
},
"groupMembers": {
"message": "Group members"
},
"showMembers": {
"message": "Show members"
2015-12-25 06:50:27 +00:00
},
"resetSession": {
"message": "Reset session",
"description": "This is a menu item for resetting the session, using the imperative case, as in a command."
2015-12-25 06:50:27 +00:00
},
"showSafetyNumber": {
"message": "Show safety number"
},
"verifyHelp": {
"message": "If you wish to verify the security of your end-to-end encryption with $name$, compare the numbers above with the numbers on their device.",
"placeholders": {
"name": {
"content": "$1",
"example": "John"
}
}
},
"theirIdentityUnknown": {
"message": "You haven't exchanged any messages with this contact yet. Your safety number with them will be available after the first message."
},
2015-12-25 06:50:27 +00:00
"deleteMessages": {
"message": "Delete messages",
"description": "Menu item for deleting messages, title case."
2015-12-25 06:52:50 +00:00
},
"deleteConversationConfirmation": {
"message": "Permanently delete this conversation?",
"description": "Confirmation dialog text that asks the user if they really wish to delete the conversation. Answer buttons use the strings 'ok' and 'cancel'. The deletion is permanent, i.e. it cannot be undone."
},
2015-12-25 06:52:50 +00:00
"sessionEnded": {
"message": "Secure session reset",
"description": "This is a past tense, informational message. In other words, your secure session has been reset."
},
"noContents": {
"message": "No message contents",
"description": "Shown in a message bubble if we have nothing in the message to display, or a quote and nothing else"
},
"installWelcome": {
"message": "Welcome to Signal Desktop",
"description": "Welcome title on the install page"
},
"installTagline": {
"message": "Privacy is possible. Signal makes it easy.",
"description": "Tagline displayed under 'installWelcome' string on the install page"
},
New design for import/install, 'light' import (#2053) - A new design for the import flow. It features: - Icons at the top of every screen - Gray background, blue buttons, thinner text - Simpler copy - A new design for the install flow. It features: - Immediate entry into the QR code screen - Animated dots to show that we're loading the QR code from the server - Fewer screens: 1) QR 2) device name 3) sync-in-progress - When not set up, the app opens directly into the install screen, which has been streamlined. The `--import` command-line argument will cause the app to open directly into the import flow. - Support for two different flavors of builds - the normal build will open into the standard registration flow, and the import flavor will be exactly the same except during setup it will open directly into the import flow. - A new design for the (dev-only) standalone registration view - When these install sequences are active, the OS File menu has entries to allow you to switch the method of setup you'd like to use. These go away as soon as the first step is taken in any of these flows. - The device name (chosen on initial setup) is now shown in the settings panel - At the end of a light import, we hand off to the normal device link screen, starting at the QR code. On a full import, we remove the sensitive encryption information in the export to prevent conflicts on multiple imports. - `Whisper.Backup.exportToDirectory()` takes an options object so you can tell it to do a light export. - `Whisper.Backup.importFromDirectory()` takes an options object so you can force it to load only the light components found on disk. It also returns an object so you can tell whether a given import was a full import or light import. - On start of import, we build a list of all the ids present in the messages, conversations, and groups stores in IndexedDB. This can take some time if a lot of data is in the database already, but it makes the subsequent deduplicated import very fast. - Disappearing messages are now excluded when exporting - Remove some TODOs in the tests
2018-02-22 18:40:32 +00:00
"linkYourPhone": {
"message": "Link your phone to Signal Desktop",
"description": "Shown on the front page when the application first starst, above the QR code"
},
New design for import/install, 'light' import (#2053) - A new design for the import flow. It features: - Icons at the top of every screen - Gray background, blue buttons, thinner text - Simpler copy - A new design for the install flow. It features: - Immediate entry into the QR code screen - Animated dots to show that we're loading the QR code from the server - Fewer screens: 1) QR 2) device name 3) sync-in-progress - When not set up, the app opens directly into the install screen, which has been streamlined. The `--import` command-line argument will cause the app to open directly into the import flow. - Support for two different flavors of builds - the normal build will open into the standard registration flow, and the import flavor will be exactly the same except during setup it will open directly into the import flow. - A new design for the (dev-only) standalone registration view - When these install sequences are active, the OS File menu has entries to allow you to switch the method of setup you'd like to use. These go away as soon as the first step is taken in any of these flows. - The device name (chosen on initial setup) is now shown in the settings panel - At the end of a light import, we hand off to the normal device link screen, starting at the QR code. On a full import, we remove the sensitive encryption information in the export to prevent conflicts on multiple imports. - `Whisper.Backup.exportToDirectory()` takes an options object so you can tell it to do a light export. - `Whisper.Backup.importFromDirectory()` takes an options object so you can force it to load only the light components found on disk. It also returns an object so you can tell whether a given import was a full import or light import. - On start of import, we build a list of all the ids present in the messages, conversations, and groups stores in IndexedDB. This can take some time if a lot of data is in the database already, but it makes the subsequent deduplicated import very fast. - Disappearing messages are now excluded when exporting - Remove some TODOs in the tests
2018-02-22 18:40:32 +00:00
"signalSettings": {
"message": "Signal Settings",
"description": "Used in the guidance to help people find the 'link new device' area of their Signal mobile app"
},
New design for import/install, 'light' import (#2053) - A new design for the import flow. It features: - Icons at the top of every screen - Gray background, blue buttons, thinner text - Simpler copy - A new design for the install flow. It features: - Immediate entry into the QR code screen - Animated dots to show that we're loading the QR code from the server - Fewer screens: 1) QR 2) device name 3) sync-in-progress - When not set up, the app opens directly into the install screen, which has been streamlined. The `--import` command-line argument will cause the app to open directly into the import flow. - Support for two different flavors of builds - the normal build will open into the standard registration flow, and the import flavor will be exactly the same except during setup it will open directly into the import flow. - A new design for the (dev-only) standalone registration view - When these install sequences are active, the OS File menu has entries to allow you to switch the method of setup you'd like to use. These go away as soon as the first step is taken in any of these flows. - The device name (chosen on initial setup) is now shown in the settings panel - At the end of a light import, we hand off to the normal device link screen, starting at the QR code. On a full import, we remove the sensitive encryption information in the export to prevent conflicts on multiple imports. - `Whisper.Backup.exportToDirectory()` takes an options object so you can tell it to do a light export. - `Whisper.Backup.importFromDirectory()` takes an options object so you can force it to load only the light components found on disk. It also returns an object so you can tell whether a given import was a full import or light import. - On start of import, we build a list of all the ids present in the messages, conversations, and groups stores in IndexedDB. This can take some time if a lot of data is in the database already, but it makes the subsequent deduplicated import very fast. - Disappearing messages are now excluded when exporting - Remove some TODOs in the tests
2018-02-22 18:40:32 +00:00
"linkedDevices": {
"message": "Linked Devices",
"description": "Used in the guidance to help people find the 'link new device' area of their Signal mobile app"
},
New design for import/install, 'light' import (#2053) - A new design for the import flow. It features: - Icons at the top of every screen - Gray background, blue buttons, thinner text - Simpler copy - A new design for the install flow. It features: - Immediate entry into the QR code screen - Animated dots to show that we're loading the QR code from the server - Fewer screens: 1) QR 2) device name 3) sync-in-progress - When not set up, the app opens directly into the install screen, which has been streamlined. The `--import` command-line argument will cause the app to open directly into the import flow. - Support for two different flavors of builds - the normal build will open into the standard registration flow, and the import flavor will be exactly the same except during setup it will open directly into the import flow. - A new design for the (dev-only) standalone registration view - When these install sequences are active, the OS File menu has entries to allow you to switch the method of setup you'd like to use. These go away as soon as the first step is taken in any of these flows. - The device name (chosen on initial setup) is now shown in the settings panel - At the end of a light import, we hand off to the normal device link screen, starting at the QR code. On a full import, we remove the sensitive encryption information in the export to prevent conflicts on multiple imports. - `Whisper.Backup.exportToDirectory()` takes an options object so you can tell it to do a light export. - `Whisper.Backup.importFromDirectory()` takes an options object so you can force it to load only the light components found on disk. It also returns an object so you can tell whether a given import was a full import or light import. - On start of import, we build a list of all the ids present in the messages, conversations, and groups stores in IndexedDB. This can take some time if a lot of data is in the database already, but it makes the subsequent deduplicated import very fast. - Disappearing messages are now excluded when exporting - Remove some TODOs in the tests
2018-02-22 18:40:32 +00:00
"plusButton": {
"message": "'+' Button",
"description": "The button used in Signal Android to add a new linked device"
},
New design for import/install, 'light' import (#2053) - A new design for the import flow. It features: - Icons at the top of every screen - Gray background, blue buttons, thinner text - Simpler copy - A new design for the install flow. It features: - Immediate entry into the QR code screen - Animated dots to show that we're loading the QR code from the server - Fewer screens: 1) QR 2) device name 3) sync-in-progress - When not set up, the app opens directly into the install screen, which has been streamlined. The `--import` command-line argument will cause the app to open directly into the import flow. - Support for two different flavors of builds - the normal build will open into the standard registration flow, and the import flavor will be exactly the same except during setup it will open directly into the import flow. - A new design for the (dev-only) standalone registration view - When these install sequences are active, the OS File menu has entries to allow you to switch the method of setup you'd like to use. These go away as soon as the first step is taken in any of these flows. - The device name (chosen on initial setup) is now shown in the settings panel - At the end of a light import, we hand off to the normal device link screen, starting at the QR code. On a full import, we remove the sensitive encryption information in the export to prevent conflicts on multiple imports. - `Whisper.Backup.exportToDirectory()` takes an options object so you can tell it to do a light export. - `Whisper.Backup.importFromDirectory()` takes an options object so you can force it to load only the light components found on disk. It also returns an object so you can tell whether a given import was a full import or light import. - On start of import, we build a list of all the ids present in the messages, conversations, and groups stores in IndexedDB. This can take some time if a lot of data is in the database already, but it makes the subsequent deduplicated import very fast. - Disappearing messages are now excluded when exporting - Remove some TODOs in the tests
2018-02-22 18:40:32 +00:00
"linkNewDevice": {
"message": "Link New Device",
"description": "The menu option shown in Signal iOS to add a new linked device"
},
New design for import/install, 'light' import (#2053) - A new design for the import flow. It features: - Icons at the top of every screen - Gray background, blue buttons, thinner text - Simpler copy - A new design for the install flow. It features: - Immediate entry into the QR code screen - Animated dots to show that we're loading the QR code from the server - Fewer screens: 1) QR 2) device name 3) sync-in-progress - When not set up, the app opens directly into the install screen, which has been streamlined. The `--import` command-line argument will cause the app to open directly into the import flow. - Support for two different flavors of builds - the normal build will open into the standard registration flow, and the import flavor will be exactly the same except during setup it will open directly into the import flow. - A new design for the (dev-only) standalone registration view - When these install sequences are active, the OS File menu has entries to allow you to switch the method of setup you'd like to use. These go away as soon as the first step is taken in any of these flows. - The device name (chosen on initial setup) is now shown in the settings panel - At the end of a light import, we hand off to the normal device link screen, starting at the QR code. On a full import, we remove the sensitive encryption information in the export to prevent conflicts on multiple imports. - `Whisper.Backup.exportToDirectory()` takes an options object so you can tell it to do a light export. - `Whisper.Backup.importFromDirectory()` takes an options object so you can force it to load only the light components found on disk. It also returns an object so you can tell whether a given import was a full import or light import. - On start of import, we build a list of all the ids present in the messages, conversations, and groups stores in IndexedDB. This can take some time if a lot of data is in the database already, but it makes the subsequent deduplicated import very fast. - Disappearing messages are now excluded when exporting - Remove some TODOs in the tests
2018-02-22 18:40:32 +00:00
"deviceName": {
"message": "Device name",
"description": "The label in settings panel shown for the user-provided name for this desktop instance"
},
New design for import/install, 'light' import (#2053) - A new design for the import flow. It features: - Icons at the top of every screen - Gray background, blue buttons, thinner text - Simpler copy - A new design for the install flow. It features: - Immediate entry into the QR code screen - Animated dots to show that we're loading the QR code from the server - Fewer screens: 1) QR 2) device name 3) sync-in-progress - When not set up, the app opens directly into the install screen, which has been streamlined. The `--import` command-line argument will cause the app to open directly into the import flow. - Support for two different flavors of builds - the normal build will open into the standard registration flow, and the import flavor will be exactly the same except during setup it will open directly into the import flow. - A new design for the (dev-only) standalone registration view - When these install sequences are active, the OS File menu has entries to allow you to switch the method of setup you'd like to use. These go away as soon as the first step is taken in any of these flows. - The device name (chosen on initial setup) is now shown in the settings panel - At the end of a light import, we hand off to the normal device link screen, starting at the QR code. On a full import, we remove the sensitive encryption information in the export to prevent conflicts on multiple imports. - `Whisper.Backup.exportToDirectory()` takes an options object so you can tell it to do a light export. - `Whisper.Backup.importFromDirectory()` takes an options object so you can force it to load only the light components found on disk. It also returns an object so you can tell whether a given import was a full import or light import. - On start of import, we build a list of all the ids present in the messages, conversations, and groups stores in IndexedDB. This can take some time if a lot of data is in the database already, but it makes the subsequent deduplicated import very fast. - Disappearing messages are now excluded when exporting - Remove some TODOs in the tests
2018-02-22 18:40:32 +00:00
"chooseDeviceName": {
"message": "Choose this device's name",
"description": "The header shown on the 'choose device name' screen in the device linking process"
},
New design for import/install, 'light' import (#2053) - A new design for the import flow. It features: - Icons at the top of every screen - Gray background, blue buttons, thinner text - Simpler copy - A new design for the install flow. It features: - Immediate entry into the QR code screen - Animated dots to show that we're loading the QR code from the server - Fewer screens: 1) QR 2) device name 3) sync-in-progress - When not set up, the app opens directly into the install screen, which has been streamlined. The `--import` command-line argument will cause the app to open directly into the import flow. - Support for two different flavors of builds - the normal build will open into the standard registration flow, and the import flavor will be exactly the same except during setup it will open directly into the import flow. - A new design for the (dev-only) standalone registration view - When these install sequences are active, the OS File menu has entries to allow you to switch the method of setup you'd like to use. These go away as soon as the first step is taken in any of these flows. - The device name (chosen on initial setup) is now shown in the settings panel - At the end of a light import, we hand off to the normal device link screen, starting at the QR code. On a full import, we remove the sensitive encryption information in the export to prevent conflicts on multiple imports. - `Whisper.Backup.exportToDirectory()` takes an options object so you can tell it to do a light export. - `Whisper.Backup.importFromDirectory()` takes an options object so you can force it to load only the light components found on disk. It also returns an object so you can tell whether a given import was a full import or light import. - On start of import, we build a list of all the ids present in the messages, conversations, and groups stores in IndexedDB. This can take some time if a lot of data is in the database already, but it makes the subsequent deduplicated import very fast. - Disappearing messages are now excluded when exporting - Remove some TODOs in the tests
2018-02-22 18:40:32 +00:00
"finishLinkingPhone": {
"message": "Finish linking phone",
"description": "The text on the button to finish the linking process, after choosing the device name"
},
New design for import/install, 'light' import (#2053) - A new design for the import flow. It features: - Icons at the top of every screen - Gray background, blue buttons, thinner text - Simpler copy - A new design for the install flow. It features: - Immediate entry into the QR code screen - Animated dots to show that we're loading the QR code from the server - Fewer screens: 1) QR 2) device name 3) sync-in-progress - When not set up, the app opens directly into the install screen, which has been streamlined. The `--import` command-line argument will cause the app to open directly into the import flow. - Support for two different flavors of builds - the normal build will open into the standard registration flow, and the import flavor will be exactly the same except during setup it will open directly into the import flow. - A new design for the (dev-only) standalone registration view - When these install sequences are active, the OS File menu has entries to allow you to switch the method of setup you'd like to use. These go away as soon as the first step is taken in any of these flows. - The device name (chosen on initial setup) is now shown in the settings panel - At the end of a light import, we hand off to the normal device link screen, starting at the QR code. On a full import, we remove the sensitive encryption information in the export to prevent conflicts on multiple imports. - `Whisper.Backup.exportToDirectory()` takes an options object so you can tell it to do a light export. - `Whisper.Backup.importFromDirectory()` takes an options object so you can force it to load only the light components found on disk. It also returns an object so you can tell whether a given import was a full import or light import. - On start of import, we build a list of all the ids present in the messages, conversations, and groups stores in IndexedDB. This can take some time if a lot of data is in the database already, but it makes the subsequent deduplicated import very fast. - Disappearing messages are now excluded when exporting - Remove some TODOs in the tests
2018-02-22 18:40:32 +00:00
"initialSync": {
"message": "Syncing contacts and groups",
"description": "Shown during initial link while contacts and groups are being pulled from mobile device"
},
New design for import/install, 'light' import (#2053) - A new design for the import flow. It features: - Icons at the top of every screen - Gray background, blue buttons, thinner text - Simpler copy - A new design for the install flow. It features: - Immediate entry into the QR code screen - Animated dots to show that we're loading the QR code from the server - Fewer screens: 1) QR 2) device name 3) sync-in-progress - When not set up, the app opens directly into the install screen, which has been streamlined. The `--import` command-line argument will cause the app to open directly into the import flow. - Support for two different flavors of builds - the normal build will open into the standard registration flow, and the import flavor will be exactly the same except during setup it will open directly into the import flow. - A new design for the (dev-only) standalone registration view - When these install sequences are active, the OS File menu has entries to allow you to switch the method of setup you'd like to use. These go away as soon as the first step is taken in any of these flows. - The device name (chosen on initial setup) is now shown in the settings panel - At the end of a light import, we hand off to the normal device link screen, starting at the QR code. On a full import, we remove the sensitive encryption information in the export to prevent conflicts on multiple imports. - `Whisper.Backup.exportToDirectory()` takes an options object so you can tell it to do a light export. - `Whisper.Backup.importFromDirectory()` takes an options object so you can force it to load only the light components found on disk. It also returns an object so you can tell whether a given import was a full import or light import. - On start of import, we build a list of all the ids present in the messages, conversations, and groups stores in IndexedDB. This can take some time if a lot of data is in the database already, but it makes the subsequent deduplicated import very fast. - Disappearing messages are now excluded when exporting - Remove some TODOs in the tests
2018-02-22 18:40:32 +00:00
"installConnectionFailed": {
"message": "Failed to connect to server.",
"description": "Displayed when we can't connect to the server."
},
"installTooManyDevices": {
"message": "Sorry, you have too many devices linked already. Try removing some."
},
"settings": {
"message": "Settings",
"description": "Menu item and header for global settings"
},
2016-09-23 12:12:07 +00:00
"theme": {
"message": "Theme",
"description": "Header for theme settings"
},
"clearDataHeader": {
"message": "Clear Data",
"description": "Header in the settings dialog for the section dealing with data deletion"
},
"clearDataExplanation": {
"message": "This will clear all data in the application, removing all messages and saved account information.",
"description": "Text describing what the clear data button will do."
},
"clearDataButton": {
"message": "Clear data",
"description": "Button in the settings dialog starting process to delete all data"
},
"deleteAllDataHeader": {
"message": "Delete all data?",
"description": "Header of the full-screen delete data confirmation screen"
},
"deleteAllDataBody": {
"message": "You are about to delete all of this application's saved account information, including all contacts and all messages. You can always link with your mobile device again, but that will not restore deleted messages.",
"description": "Text describing what exactly will happen if the user clicks the button to delete all data"
},
"deleteAllDataButton": {
"message": "Delete all data",
"description": "Text of the button that deletes all data"
},
"deleteAllDataProgress": {
"message": "Disconnecting and deleting all data",
"description": "Text of the button that deletes all data"
},
"notifications": {
"message": "Notifications",
"description": "Header for notification settings"
},
"notificationSettingsDialog": {
"message": "When messages arrive, display notifications that reveal:",
"description": "Explain the purpose of the notification settings"
},
"disableNotifications": {
"message": "Disable notifications",
"description": "Label for disabling notifications"
},
"nameAndMessage": {
"message": "Both sender name and message",
"description": "Label for setting notifications to display name and message text"
},
"noNameOrMessage": {
"message": "Neither name nor message",
"description": "Label for setting notifications to display no name and no message text"
},
"nameOnly": {
"message": "Only sender name",
"description": "Label for setting notifications to display sender name only"
},
"newMessage": {
"message": "New Message",
"description": "Displayed in notifications for only 1 message"
},
"newMessages": {
"message": "New Messages",
"description": "Displayed in notifications for multiple messages"
},
"messageNotSent": {
"message": "Message not sent.",
"description": "Informational label, appears on messages that failed to send"
},
"someRecipientsFailed": {
"message": "Some recipients failed.",
"description": "When you send to multiple recipients via a group, and the message went to some recipients but not others."
},
"showMore": {
"message": "Details",
"description": "Displays the details of a key change"
},
"showLess": {
"message": "Hide details",
"description": "Hides the details of a key change"
},
"learnMore": {
"message": "Learn more about verifying safety numbers",
2016-10-28 06:13:22 +00:00
"description": "Text that links to a support article on verifying safety numbers"
},
"expiredWarning": {
"message": "This version of Signal Desktop has expired. Please upgrade to the latest version to continue messaging.",
"description": "Warning notification that this version of the app has expired"
},
"androidMessageLengthWarning": {
"message": "Android clients will only receive the first 2000 characters of this message.",
"description": "Warning that long messages could not get received completely by Android clients."
},
"upgrade": {
"message": "Upgrade",
"description": "Label text for button to upgrade the app to the latest version"
},
"mediaMessage": {
"message": "Media message",
"description": "Description of a message that has an attachment and no text, displayed in the conversation list as a preview."
},
"unregisteredUser": {
"message": "Number is not registered",
"description": "Error message displayed when sending to an unregistered user."
},
"sync": {
"message": "Contacts",
"description": "Label for contact and group sync settings"
},
"syncExplanation": {
"message": "Import all Signal groups and contacts from your mobile device.",
"description": "Explanatory text for sync settings"
},
"lastSynced": {
"message": "Last import at",
"description": "Label for date and time of last sync operation"
},
"syncNow": {
"message": "Import now",
"description": "Label for a button that syncs contacts and groups from your phone"
},
"syncing": {
"message": "Importing...",
"description": "Label for a disabled sync button while sync is in progress."
},
"syncFailed": {
"message": "Import failed. Make sure your computer and your phone are connected to the internet.",
"description": "Informational text displayed if a sync operation times out."
},
"timestamp_s": {
"description": "Brief timestamp for messages sent less than a minute ago. Displayed in the conversation list and message bubble.",
"message": "now"
},
"timestamp_m": {
"description": "Brief timestamp for messages sent about one minute ago. Displayed in the conversation list and message bubble.",
"message": "1 minute"
},
"timestamp_h": {
"description": "Brief timestamp for messages sent about one hour ago. Displayed in the conversation list and message bubble.",
"message": "1 hour"
},
"timestampFormat_M": {
"description": "Timestamp format string for displaying month and day (but not the year) of a date within the current year, ex: use 'MMM D' for 'Aug 8', or 'D MMM' for '8 Aug'.",
"message": "MMM D"
},
"unblockToSend": {
"message": "Unblock this contact to send a message.",
"description": "Brief message shown when trying to message a blocked number"
2016-09-27 06:15:20 +00:00
},
"youChangedTheTimer": {
"message": "You set the timer to $time$.",
"description": "Message displayed when you change the message expiration timer in a conversation.",
"placeholders": {
"time": {
"content": "$1",
"example": "10m"
}
}
},
"timerSetOnSync": {
"message": "Updating timer to $time$.",
"description": "Message displayed when timer is set on initial link of desktop device.",
"placeholders": {
"time": {
"content": "$1",
"example": "10m"
}
}
},
"theyChangedTheTimer": {
2016-09-27 06:15:20 +00:00
"message": "$name$ set the timer to $time$.",
"description": "Message displayed when someone else changes the message expiration timer in a conversation.",
2016-09-27 06:15:20 +00:00
"placeholders": {
"name": {
"content": "$1",
"example": "Bob"
},
"time": {
"content": "$2",
"example": "10m"
}
}
},
"timerOption_0_seconds": {
"message": "off",
"description": "Label for option to turn off message expiration in the timer menu"
},
"timerOption_5_seconds": {
"message": "5 seconds",
"description": "Label for a selectable option in the message expiration timer menu"
},
"timerOption_10_seconds": {
"message": "10 seconds",
"description": "Label for a selectable option in the message expiration timer menu"
},
"timerOption_30_seconds": {
"message": "30 seconds",
"description": "Label for a selectable option in the message expiration timer menu"
},
"timerOption_1_day": {
"message": "1 day",
"description": "Label for a selectable option in the message expiration timer menu"
},
"timerOption_1_week": {
"message": "1 week",
"description": "Label for a selectable option in the message expiration timer menu"
},
"disappearingMessages": {
"message": "Disappearing messages",
"description": "Conversation menu option to enable disappearing messages"
},
"timerOption_0_seconds_abbreviated": {
"message": "off",
2016-10-08 02:24:17 +00:00
"description": "Short format indicating current timer setting in the conversation list snippet"
},
"timerOption_5_seconds_abbreviated": {
"message": "5s",
2016-10-08 02:24:17 +00:00
"description": "Very short format indicating current timer setting in the conversation header"
},
"timerOption_10_seconds_abbreviated": {
"message": "10s",
2016-10-08 02:24:17 +00:00
"description": "Very short format indicating current timer setting in the conversation header"
},
"timerOption_30_seconds_abbreviated": {
"message": "30s",
2016-10-08 02:24:17 +00:00
"description": "Very short format indicating current timer setting in the conversation header"
},
"timerOption_1_minute_abbreviated": {
"message": "1m",
2016-10-08 02:24:17 +00:00
"description": "Very short format indicating current timer setting in the conversation header"
},
"timerOption_5_minutes_abbreviated": {
"message": "5m",
2016-10-08 02:24:17 +00:00
"description": "Very short format indicating current timer setting in the conversation header"
},
"timerOption_30_minutes_abbreviated": {
"message": "30m",
2016-10-08 02:24:17 +00:00
"description": "Very short format indicating current timer setting in the conversation header"
},
"timerOption_1_hour_abbreviated": {
"message": "1h",
2016-10-08 02:24:17 +00:00
"description": "Very short format indicating current timer setting in the conversation header"
},
"timerOption_6_hours_abbreviated": {
"message": "6h",
2016-10-08 02:24:17 +00:00
"description": "Very short format indicating current timer setting in the conversation header"
},
"timerOption_12_hours_abbreviated": {
"message": "12h",
2016-10-08 02:24:17 +00:00
"description": "Very short format indicating current timer setting in the conversation header"
},
"timerOption_1_day_abbreviated": {
"message": "1d",
2016-10-08 02:24:17 +00:00
"description": "Very short format indicating current timer setting in the conversation header"
},
"timerOption_1_week_abbreviated": {
"message": "1w",
2016-10-08 02:24:17 +00:00
"description": "Very short format indicating current timer setting in the conversation header"
},
"timerSetTo": {
"message": "Timer set to $time$",
"description": "Displayed in the conversation list when the timer is updated.",
"placeholders": {
"time": {
"content": "$1",
"example": "1w"
}
}
},
"audioNotificationDescription": {
"message": "Play audio notification",
"description": "Description for audio notification setting"
},
"keychanged": {
"message": "Your safety number with $name$ has changed. Click to show.",
"description": "",
"placeholders": {
"name": {
"content": "$1",
"example": "John"
}
}
},
"yourSafetyNumberWith": {
"message": "Your safety number with $name$:",
"description": "Heading for safety number view",
"placeholders": {
"name": {
"content": "$1",
"example": "John"
}
}
},
"themeAndroidDark": {
"message": "Android (dark)",
"description": "Label text for dark Android theme"
},
"hideMenuBar": {
"message": "Hide menu bar",
"description": "Label text for menu bar visibility setting"
},
UX Improvements: Global Menu & Copy Changes (#2078) - [x] Removed ‘Restart Signal’ global menu item - [x] Change _Click to create contact…_ to _Start conversation…_ - [x] Move global menu (top-left kebab) into OS menu bar, i.e. **Settings** > **Preferences…** - [x] Add tests for OS menu bar templates - [x] Fix bug with **Window** menu on macOS when showing setup options - [x] Use _Title Case_ for all OS menu bar menu items for consistency commit dedf7c9af0de90980388559659df0d92a77b864c Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:53:42 2018 -0500 Use ‘Title Case’ to be consistent with OS menus References: - Apple: - https://developer.apple.com/macos/human-interface-guidelines/menus/menu-anatomy/#menu-and-menu-item-titles - https://developer.apple.com/library/content/documentation/FinalCutProX/Conceptual/FxPlugHIG/TextStyleGuidelines/TextStyleGuidelines.html#//apple_ref/doc/uid/TP40013782-CH6-SW1 - https://titlecaseconverter.com/ commit 3286da29b334bd4526c587b17707c2f230cec8f5 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:36:50 2018 -0500 Fix bug for macOS ‘Window’ menu with setup options commit 236a23d1eafe2a16073394a27b9013298b682a25 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:27:46 2018 -0500 Test menus with included setup options commit c5d5f5abb8d7f52d6a4aa182a86c92f7ddceade0 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:10:27 2018 -0500 Move settings (‘Preferences’) into OS-level menu This reduces our reliance on custom UI until we have more design resources. commit 027803f8f4983cffa443f0beff1854dcf541689b Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 16:02:56 2018 -0500 Prepare tests for menu with/without included setup commit 9e2f006924b85eb249a8a1261c1c4dd1a706afa6 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 15:55:46 2018 -0500 Destructure `includeSetup` commit 6b2a1eccdf724fd722e58415d2700da73942d9e8 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 15:55:14 2018 -0500 :abc: `createTemplate` `options` commit c2fecba34b153fed106f414ed3347d46299f6fe5 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:49:55 2018 -0500 Test menu for Windows and Linux commit 60281b1af9ad1f022cdbc40711ebd0b688a7355d Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:40:39 2018 -0500 Add `yarn run test-app` command commit 1a0489919c0a97b03fe88196260fef894fb3d9e4 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:40:29 2018 -0500 Add test for `SignalMenu.createTemplate` on macOS commit 9638b86c0f00f231e44562a5aa01626f0e5fdd8b Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 12:34:46 2018 -0500 Make `createTemplate` pure Extracting `options.platform` makes it easier to test without having to stub `process.platform`. commit 9c26404892d7c9a7bd0199a9e8367a165a3b365c Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:47:39 2018 -0500 Extract `locale.load` `appLocale` & `logger` for testability This allows us to run this code in a non-Electron environment, e.g. Node.js Mocha test suite. commit 710b22438df25c8d5e8431845a035c55ec8fc0b7 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:46:13 2018 -0500 :abc: npm scripts commit 9ae22937fbce078f91443023b560b3c0468c1380 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:45:30 2018 -0500 Use 2-space indendation for `app` module tests commit 22c26baf6159bd2e1f5a787c10e2260f09395329 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:22:55 2018 -0500 Prefer named exports commit 9c9526195266ac77ac2ca04135a1e675f617dfd2 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:22:46 2018 -0500 :abc: Organize `require`s commit 2f144d24d9e9a9ef72fe418996e3c911b304b00a Author: Daniel Gasienica <daniel@gasienica.ch> Date: Tue Feb 27 11:13:50 2018 -0500 Remove existing global hamburger menu This will be replaced by a OS-level ‘Preferences’ menu. commit f5adb374cb742e5f319ececda8ab6d8adee88d7e Author: Daniel Gasienica <daniel@gasienica.ch> Date: Mon Feb 26 18:40:54 2018 -0500 Remove ‘Restart Signal’ menu from settings Apparently, this is a remnant from the Chrome web application. commit d7a206bc8e67ef44022085e804ca040ed1b219f7 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Mon Feb 26 17:16:49 2018 -0500 Clarify label for starting a new conversation When user a enters a number that is not a contact, we prompt them to start a new conversation. commit 715a4064367fb61d85c1a4f9d48261b2ce002435 Author: Daniel Gasienica <daniel@gasienica.ch> Date: Mon Feb 26 16:46:26 2018 -0500 Use ‘Enter name or number’ as prompt’ This follows implementation of Android and recommendation from Alissa.
2018-03-02 20:59:39 +00:00
"startConversation": {
"message": "Start conversation…",
"description": "Label underneath number a user enters that is not an existing contact"
},
"newPhoneNumber": {
"message": "Enter a phone number to add a contact.",
"description": "Placeholder for adding a new number to a contact"
},
"invalidNumberError": {
"message": "Invalid number",
"description": "When a person inputs a number that is invalid"
},
"unlinkedWarning": {
"message": "Relink Signal Desktop to your mobile device to continue messaging."
},
"unlinked": {
"message": "Unlinked"
},
"relink": {
"message": "Relink"
},
"autoUpdateNewVersionTitle": {
"message": "Signal update available"
},
"autoUpdateNewVersionMessage": {
"message": "There is a new version of Signal available."
},
"autoUpdateNewVersionInstructions": {
"message": "Press Restart Signal to apply the updates."
},
"autoUpdateRestartButtonLabel": {
"message": "Restart Signal"
},
"autoUpdateLaterButtonLabel": {
"message": "Later"
2017-10-10 15:49:12 +00:00
},
"leftTheGroup": {
"message": "$name$ left the group.",
"description": "Shown in the conversation history when a single person leaves the group",
2017-10-10 15:49:12 +00:00
"placeholders": {
"name": {
"content": "$1",
"example": "Bob"
}
}
},
"updatedTheGroup": {
"message": "Updated the group.",
"description": "Shown in the conversation history when someone updates the group"
},
"titleIsNow": {
"message": "Title is now '$name$'.",
"description": "Shown in the conversation history when someone changes the title of the group",
"placeholders": {
"name": {
"content": "$1",
"example": "Book Club"
}
}
},
"joinedTheGroup": {
"message": "$name$ joined the group.",
"description": "Shown in the conversation history when a single person joins the group",
"placeholders": {
"name": {
"content": "$1",
"example": "Alice"
}
}
},
"multipleJoinedTheGroup": {
2017-10-10 15:49:12 +00:00
"message": "$names$ joined the group.",
"description": "Shown in the conversation history when more than one person joins the group",
2017-10-10 15:49:12 +00:00
"placeholders": {
"names": {
"content": "$1",
"example": "Alice, Bob"
}
}
}
2015-12-14 23:10:49 +00:00
}