- 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
"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."
},
"menuSetupWithImport":{
"message":"Set up with import",
"description":"When the application is not yet set up, menu option to start up the import sequence"
},
"menuSetupAsNewDevice":{
"message":"Set up as new device",
"description":"When the application is not yet set up, menu option to start up the set up as fresh device"
},
"menuSetupAsStandalone":{
"message":"Set up as standalone device",
"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"
},
"exportInstructions":{
"message":"The first step is to choose a directory to store this application's exported data. It will contain your message history and sensitive cryptographic data, so be sure to save it somewhere private.",
"description":"Description of the export process"
},
"chooseDirectory":{
"message":"Choose directory",
"description":"Button to allow the user to export all data from app as part of migration process"
},
"exportButton":{
"message":"Export",
"desription":"Button shown on the choose directory dialog which starts the export process"
},
"exportChooserTitle":{
"message":"Choose target directory for data",
"description":"Title of the popup window used to select data storage location"
},
"exportAgain":{
"message":"Export again",
"description":"If user has already exported once, this button allows user to do it again if needed"
},
"exportError":{
"message":"Unfortunately, something went wrong during the export. First, double-check your target empty directory for write access and enough space. Then, please submit a debug log so we can help you get migrated!",
"description":"Helper text if the user went forward on migrating the app, but ran into an error"
},
"exporting":{
"message":"Please wait while we export your data. It may take several minutes. You can still use Signal on your phone and other devices during this time.",
"description":"Message shown on the migration screen while we export data"
},
"exportComplete":{
"message":"Your data has been exported to: <p><b>$location$</b></p> You'll be able to import this data as you set up <a target='_blank' href='https://support.signal.org/hc/en-us/articles/214507138'>the new Signal Desktop</a>.",
"description":"Message shown on the migration screen when we are done exporting data",
"placeholders":{
"location":{
"content":"$1",
"example":"/Users/someone/somewhere"
}
}
"message":"Choose folder",
"description":"Button to allow the user to find a folder on disk"
},
"installNewSignal":{
"message":"Install new Signal Desktop",
"description":"When export is complete, a button shows which sends user to Signal Desktop install instructions"
"loadDataHeader":{
"message":"Load your data",
"description":"Header shown on the first screen in the data import process"
},
"importButton":{
"message":"Import",
"desription":"Button shown on the choose directory dialog which starts the import process"
"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"
},
"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":{
"message":"Unfortunately, something went wrong during the import. <p>First, double-check your target directory. It should start with 'Signal Export.'</p><p>Next, try with a new export of your data from the Chrome App.</p>If that still fails, please <a target='_blank' href='https://support.signal.org/hc/en-us/articles/215188737'>submit a debug log</a> so we can help you get migrated!",
"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."
},
"tryAgain":{
"message":"Try again",
"importAgain":{
"message":"Choose folder and try again",
"description":"Button shown if the user runs into an error during import, allowing them to start over"
},
"importInstructions":{
"message":"The first step is to tell us where you previously <a href='https://support.signal.org/hc/en-us/articles/115002502511'>exported your Signal data</a>. It will be a directory whose name starts with 'Signal Export.'<br><br><b>NOTE</b>: You must only import a set of exported data <b>once</b>. Import makes a copy of the exported client, and duplicate clients interfere with each other.",
"description":"Description of the export process"
"importCompleteHeader":{
"message":"Success!",
"description":"Header shown on the screen at the end of a successful import process"
},
"importing":{
"message":"Please wait while we import your data...",
"description":"Shown as we are loading the user's data from disk"
"importCompleteStartButton":{
"message":"Start using Signal Desktop",
"description":"Button shown at end of successful import process, nothing left but a restart"
},
"importComplete":{
"message":"We've successfully loaded your data. The next step is to restart the application!",
"description":"Shown when the import is complete."
"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"
},
"selectedLocation":{
"message":"your selected location",
@ -526,86 +512,45 @@
"message":"Privacy is possible. Signal makes it easy.",
"description":"Tagline displayed under 'installWelcome' string on the install page"
},
"installNew":{
"message":"Set up as new install",
"description":"One of two choices presented on the screen shown on first launch"
},
"installImport":{
"message":"Set up with exported data",
"description":"One of two choices presented on the screen shown on first launch"
},
"installGetStartedButton":{
"message":"Get started"
},
"installSignalLink":{
"message":"First, install <a $a_params$>Signal</a> on your mobile phone. We'll link your devices and keep your messages in sync.",
"description":"Prompt the user to install Signal on their phone before linking",
"placeholders":{
"a_params":{
"content":"$1",
"example":"href='http://example.com'"
}
}
"linkYourPhone":{
"message":"Link your phone to Signal Desktop",
"description":"Shown on the front page when the application first starst, above the QR code"
},
"installSignalLinks":{
"message":"First, install Signal on your <a $play_store$>Android</a> or <a $app_store$>iPhone</a>.<br /> We'll link your devices and keep your messages in sync.",
"description":"Prompt the user to install Signal on their phone before linking",
"placeholders":{
"play_store":{
"content":"$1",
"example":"href='http://example.com'"
},
"app_store":{
"content":"$2",
"example":"href='http://example.com'"
}
}
"signalSettings":{
"message":"Signal Settings",
"description":"Used in the guidance to help people find the 'link new device' area of their Signal mobile app"
},
"installGotIt":{
"message":"Got it",
"description":"Button for the user to confirm that they have Signal installed."
},
"installIHaveSignalButton":{
"message":"I have Signal for Android",
"description":"Button for the user to confirm that they have Signal for Android"
},
"installFollowUs":{
"message":"<a $a_params$>Follow us</a> for updates about multi-device support for iOS.",
"placeholders":{
"a_params":{
"content":"$1",
"example":"href='http://example.com'"
}
}
"linkedDevices":{
"message":"Linked Devices",
"description":"Used in the guidance to help people find the 'link new device' area of their Signal mobile app"
},
"installAndroidInstructions":{
"message":"Open Signal on your phone and navigate to Settings > Linked devices. Tap the button to add a new device, then scan the code above."
"plusButton":{
"message":"'+' Button",
"description":"The button used in Signal Android to add a new linked device"
},
"installConnecting":{
"message":"Connecting...",
"description":"Displayed when waiting for the QR Code"
"linkNewDevice":{
"message":"Link New Device",
"description":"The menu option shown in Signal iOS to add a new linked device"
},
"installConnectionFailed":{
"message":"Failed to connect to server.",
"description":"Displayed when we can't connect to the server."
},
"installGeneratingKeys":{
"message":"Generating Keys"
"deviceName":{
"message":"Device name",
"description":"The label in settings panel shown for the user-provided name for this desktop instance"
},
"installSyncingGroupsAndContacts":{
"message":"Syncing groups and contacts"
"chooseDeviceName":{
"message":"Choose this device's name",
"description":"The header shown on the 'choose device name' screen in the device linking process"
},
"installComputerName":{
"message":"This computer's name will be",
"description":"Text displayed before the input where the user can enter the name for this device."
"finishLinkingPhone":{
"message":"Finish linking phone",
"description":"The text on the button to finish the linking process, after choosing the device name"
},
"installLinkingWithNumber":{
"message":"Linking with",
"description":"Text displayed before the phone number that the user is in the process of linking with"
"initialSync":{
"message":"Syncing contacts and groups",
"description":"Shown during initial link while contacts and groups are being pulled from mobile device"
},
"installFinalButton":{
"message":"Looking good",
"description":"The final button for the install process, after the user has entered a name for their device"
"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."
<inputclass='form-control'type="text"pattern="\s*[0-9]{3}-?[0-9]{3}\s*"title="Enter your 6-digit verification code. If you did not receive a code, click Call or Send SMS to request a new one"id="code"placeholder="Verification Code"autocomplete='off'>
<div><aclass='button openInstaller'>Link to phone</a></div>
</form>
<inputclass='form-control'type='text'pattern='\s*[0-9]{3}-?[0-9]{3}\s*'title='Enter your 6-digit verification code. If you did not receive a code, click Call or Send SMS to request a new one'id='code'placeholder='Verification Code'autocomplete='off'>